Oli*_*ain 5 jquery android webview
我有一个包含WebView的原生Android应用程序.我的所有HTML,js和css都已添加到assets文件夹中的Android项目中,所以我在Java代码中初始化我的WebView就像这样......
WebView webView = (WebView)findViewById(R.id.webview);
webView.loadUrl("file:///android_asset/index.htm");
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我需要使用jQuery getScript方法从JavaScript动态加载其他js文件...
var scriptUrl = "scripts/dynamicScript.js";
$.getScript(scriptUrl , function() { alert("Success"); })
.fail(function(e){ alert("failed: " + JSON.stringify(e)); });
Run Code Online (Sandbox Code Playgroud)
基本上脚本没有加载,我收到以下消息:
failed: {"readState":4,"responseText":"", "status":404, "statusText":"error"}
Run Code Online (Sandbox Code Playgroud)
我也为scriptUrl尝试了以下替代方案,并得到完全相同的结果和消息:
"/scripts/dynamicScript.js"
"./scripts/dynamicScript.js"
"android_asset/scripts/dynamicScript.js"
"../android_asset/scripts/dynamicScript.js"
"file:///android_asset/scripts/dynamicScript.js"
Run Code Online (Sandbox Code Playgroud)
我希望这可能与同源策略有关.任何帮助实现这项工作表示赞赏.
我现在也尝试了以下$ .getScript()的替代方法.
使用非异步'脚本'ajax调用.这导致与上面完全相同......
$.ajax({
url: scriptUrl,
dataType: 'script',
success: function() { alert("Success"); },
error: function(e){ alert("failed: " + JSON.stringify(e)); },
async: true
});
Run Code Online (Sandbox Code Playgroud)
并且还将脚本标签动态插入头部.这似乎不起作用(例如,如果我只是在dynamicScript.js中有一个警报,它从未见过)...
$("<script type='text/javascript' src='" + scriptUrl +"'></script>").appendTo("head");
Run Code Online (Sandbox Code Playgroud)
我可能也值得指出,如果我远程托管网站而不是本地资产,所有上述尝试都有效但是这不是一个可行的解决方案IE它可以工作,如果我实例化如下...
WebView webView = (WebView)findViewById(R.id.webview);
webView.loadUrl("http://remote-server/index.htm");
Run Code Online (Sandbox Code Playgroud)
啊啊我似乎已经怀疑它,这个古老的经典完成了工作......
var scriptUrl = "scripts/dynamicScript.js";
var head = document.getElementsByTagName("head")[0];
script = document.createElement('script');
script.type = 'text/javascript';
script.src = scriptUrl;
script.onload = function() { alert("Success"); };
script.onerror = function(e) { alert("failed: " + JSON.stringify(e)); };
head.appendChild(script);
Run Code Online (Sandbox Code Playgroud)
感谢Phillip Fitzsimmons.不知道为什么jQuery脚本追加不起作用.
归档时间: |
|
查看次数: |
4328 次 |
最近记录: |