У меня есть нативное приложение для Android, которое содержит WebView.Весь мой HTML, js & css был добавлен в проект Android в папке активов, поэтому я инициализирую свой WebView в коде Java примерно так ...
WebView webView = (WebView)findViewById(R.id.webview);
webView.loadUrl("file:///android_asset/index.htm");
Все работает нормально, пока мне не понадобитсядинамически загрузить дополнительный js-файл из JavaScript с помощью метода jQuery getScript ...
var scriptUrl = "scripts/dynamicScript.js";
$.getScript(scriptUrl , function() { alert("Success"); })
.fail(function(e){ alert("failed: " + JSON.stringify(e)); });
В основном скрипт не загружается, и я получаю следующее сообщение:
failed: {"readState":4,"responseText":"", "status":404, "statusText":"error"}
Я также попробовал следующие альтернативы для scriptUrl и получил точно такой же результат и сообщение:
"/scripts/dynamicScript.js"
"./scripts/dynamicScript.js"
"android_asset/scripts/dynamicScript.js"
"../android_asset/scripts/dynamicScript.js"
"file:///android_asset/scripts/dynamicScript.js"
Я предполагаю, что это может иметь какое-то отношение к same-origin-policy.Любая помощь в получении этой работы приветствуется.
РЕДАКТИРОВАТЬ: Кроме того
Я также попробовал следующие альтернативы $ .getScript ().
Использование неасинхронный вызов сценария ajax.Это приводит к тому же результату, что и выше ...
$.ajax({
url: scriptUrl,
dataType: 'script',
success: function() { alert("Success"); },
error: function(e){ alert("failed: " + JSON.stringify(e)); },
async: true
});
, а также динамически вставляет тег сценария в заголовок.Это, похоже, не работает (например, если у меня просто есть предупреждение в dynamicScript.js, его никогда не видно) ...
$("<script type='text/javascript' src='" + scriptUrl +"'></script>").appendTo("head");
Я также мог бы отметить, что ВСЕ вышеописанные попытки работаютесли я размещаю веб-сайт удаленно, а не в качестве локального ресурса, то, тем не менее, это не выполнимое решение IE, это работает, если я создаю экземпляр следующим образом ...
WebView webView = (WebView)findViewById(R.id.webview);
webView.loadUrl("http://remote-server/index.htm");