2011-12-07 2 views
4

로컬 HTML 파일에서 웹보기에 표시되고 싶습니다. 응용 프로그램 데이터 디렉토리에서 이미지를 호출합니다. 내 HTML에서 여러 src 옵션을 시도했지만 아무 것도 작동하지 않는 것 같습니다.appcelerator/titanium mobile에서 webview에서 로컬 html을 사용하는 경우 응용 프로그램 데이터 디렉토리에서 이미지를로드하고 참조하는 방법

내가 이렇게 성공적으로 응용 프로그램 데이터 디렉토리에서 HTML 파일을로드 오전 : 페이지가 올바르게 웹보기에서 열립니다

var win = Ti.UI.currentWindow; 

var rootDir = Ti.Filesystem.getExternalStorageDirectory(); 
var webUrl = rootDir + 'index.html'; 

var webview = Ti.UI.createWebView({ 
width:'100%', 
height:'100%', 
url:webUrl 
}); 

win.add(presWebView) 

있지만, 모든 이미지 URL이 작동하지 않습니다.

<image src="appdata:///image.jpg"/> 
<image src="app:///image.jpg"/> 
<image src="file:///image.jpg"/> 
<image src="appdata://image.jpg"/> 
<image src="app://image.jpg"/> 
<image src="app://image.jpg"/> 

이 문제는 링크에도 적용됩니다. 아무리 내가 참조하려고해도 페이지가 종료되지 않는다고 알려줍니다.

답변

0

절대 경로로 상대 위치 인 externalstorage 디렉토리를 기준으로 주소에서 webview URL을 변경하여 로컬 html 파일에서 이미지와 링크가 올바르게 작동하는 부분 솔루션을 관리했습니다 :

var webUrl = "file:///mnt/sdcard/..." 

var webview = Ti.UI.createWebView({ 
width:'100%', 
height:'100%', 
url:webUrl 
}); 

win.add(presWebView); 

URL이 절대 경로 인 한 HTML의 모든 링크는 상대적 일 수 있습니다. 예 :

분명히 외부 저장소 디렉토리를 동적으로 가져 오는 것이 좋을 것입니다. 따라서 누구든지 html의 링크를 깨지 않고이 작업을 수행하는 방법을 알고 있다면 나는 듣고 싶을 것입니다.

0

Android 디렉토리/도구에는 DDMS라는 작은 프로그램이 있습니다. 당신이를 열 경우, 예를 들어, 그래서 .. 당신이

"file://" 

가 액세스 할 수있는 모든 경로를 볼 수 있습니다

을, 상단 메뉴에서 다음 에뮬레이터 클릭 파일 관리자를 클릭

var imgPath = "file://mnt/sdcard/uk.co.yourappid/test.jpg"; 

난 그냥 지금 웹보기에서이 작업을 가지고있다 :

Ti.App.addEventListener('snagr:plan:loadImage', function(e) { 
      $('#plan-image').css({ 
       background: "url(" + e.path + ") top left no-repeat", 
       width: e.width, 
       height: e.height 
      }); 
     }); 

희망이 도움이!

2

해결했습니다.

ExternalStorageDirectory, (파일 개체의) .nativePath 속성을 사용하여 상대 경로를 동적으로 가져올 수 있어야합니다.

var file = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory(), 'test/1.html'); enter 

mywebview = Ti.UI.createWebView({ backgroundColor: 'white', url: file.nativePath });