Cordova: ссылки на файлы javascript, расположенные в локальном ресурсе, запрещены

Статус:

У меня есть несколько файлов java-скриптов, которые я загружаю со своего сервера и сохраняю в хранилище устройства, и хочу связать их с моим index.html вот так:

<script 
    type="text/javascript" 
    src="file:///data/data/<app_id>/files/path/to/my-script.js/">
</script>

и то же самое для CSS.

Вот ошибка:

Not allowed to load local resource:
file:///data/data/<app_id>/files/path/to/style.css

ПРИМЕЧАНИЕ: это было разрешено в предыдущих версиях Cordova, но поскольку я обновился до Cordova 5, я принудительно установил белый список плагинов, после чего появилась эта ошибка разрешения.


person Eymen Elkum    schedule 10.08.2015    source источник


Ответы (2)


Я предполагаю, что вы пытаетесь добиться этого на Android. Если это правильно, я полагаю, вы можете использовать следующее для разрешения любого файла во внешней файловой системе:

window.resolveLocalFileSystemURL(path, cbSuccess, cbFail);



path - {string} a cordova path with scheme: 
                     'cdvfile://localhost/<file-system-name>/<path-to-file>' 
                 Examples: 'cdvfile://localhost/sdcard/path/to/global/file'
                           'cdvfile://localhost/cache/onlyVisibleToTheApp.txt'
cbSuccess - {function} a callback method that receives a DirectoryEntry object.

cbFail - {Function} a callback method that receives a FileError object.

Однако это требует некоторой настройки.

config.xml

<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="AndroidExtraFilesystems" value="sdcard,cache" />

AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Использован следующий вопрос например.

person George Penchev    schedule 10.08.2015
comment
спасибо, Джордж, но поможет ли это моему android_asset/www/index.html включить файл CSS с SD-карты? На самом деле я просто хочу сделать некоторые файлы обновляемыми с моего сервера, чтобы позже включить их в мой index.html. - person Eymen Elkum; 11.08.2015

Я решил эту проблему, встроив крошечный веб-сервер в Cordova с помощью этого плагина CorHttpd Cordova Plugin.

затем просто обратитесь к таблице стилей следующим образом:

<link src="http://localhost:8080/css/file.css">

и вы можете обратиться к файлу JS следующим образом:

<script src="http://localhost:8080/js/script.js" ><script>
person Eymen Elkum    schedule 13.08.2015