gpt4 book ai didi

使用本地 Assets /HTML/资源时,jQuery getScript 在 Android WebView 中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:28:09 26 4
gpt4 key购买 nike

我有一个包含 WebView 的原生 Android 应用程序。我所有的 HTML、js 和 css 都已添加到 assets 文件夹中的 Android 项目中,所以我在 Java 代码中初始化我的 WebView,就像这样...

WebView webView = (WebView)findViewById(R.id.webview);
webView.loadUrl("file:///android_asset/index.htm");

一切正常,直到我需要使用 jQuery 从 JavaScript 动态加载一个额外的 js 文件 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");

我可能还值得指出的是,如果我远程托管网站而不是作为本地 Assets ,则上述所有尝试都有效,但这不是一个可行的解决方案,如果我按如下方式实例化,它就有效......

WebView webView = (WebView)findViewById(R.id.webview);
webView.loadUrl("http://remote-server/index.htm");

最佳答案

啊哈,我似乎已经猜到了,这个古老的经典作品完成了工作......

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

感谢 Phillip Fitzsimmons。不确定为什么 jQuery 脚本附加没有达到目的。

关于使用本地 Assets /HTML/资源时,jQuery getScript 在 Android WebView 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9804317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com