В appcelerator / titanium mobile, когда я использую локальный html в веб-просмотре, как загрузить изображение из справочника данных приложения и сослаться на него - PullRequest
4 голосов
/ 07 декабря 2011

В локальном html-файле, который отображается в веб-просмотре, я хочу иметь возможность вызывать изображение из каталога данных приложения. Я попробовал несколько опций src в моем 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"/>

эта проблема также распространяется на ссылки, независимо от того, как я пытаюсь ссылаться на них, веб-просмотр подсказывает, что страница не закрывается.

Ответы [ 3 ]

2 голосов
/ 24 апреля 2012

Я решил это.

Вы должны получить ApplicationDataDirectory o ExternalStorageDirectory, затем с помощью свойства .nativePath (объекта файла) вы можете получить свой относительный путь динамически.

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

mywebview = Ti.UI.createWebView({ backgroundColor: 'white', url: file.nativePath });
0 голосов
/ 22 февраля 2012

В вашем каталоге / tools для Android есть небольшая программа под названием DDMS.Если вы откроете его, нажмите на эмуляторе, затем в верхнем меню выберите Диспетчер файлов, и вы увидите все пути, к которым

"file://"

Может получить доступ ..

Так, например:

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

Я только что начал работать в WebView:

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
            });
        });

Надеюсь, это поможет!

0 голосов
/ 08 декабря 2011

Мне удалось частичное решение, которое обеспечивает правильную работу как изображений, так и ссылок в моем локальном html-файле, изменив URL-адрес веб-просмотра с адреса, основанного на его относительном положении, на каталог externalstorage и указав абсолютный путь:

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

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

win.add(presWebView);

Пока URL-адрес является абсолютным путем, все ссылки в html могут быть относительными, например,

Очевидно, что было бы предпочтительнее динамически получать каталог внешнего хранилища, поэтому, если кто-то знает способчтобы сделать это без разрыва ссылок в html, я хотел бы услышать.

...