Javascript 在android webview中为本地文件创建脚本标记时出现问题
我有一个Android应用程序,它包含在一个简单的WebView中,在项目的assets文件夹中加载一个本地html文件 HTML有一个标记,用于调用(AJAX)外部服务,并期望得到一个表示.js文件名的字符串作为响应(比如,'test.js') 在test.js中有一个简单的函数声明,如下所示:Javascript 在android webview中为本地文件创建脚本标记时出现问题,javascript,android,jquery,html,ajax,Javascript,Android,Jquery,Html,Ajax,我有一个Android应用程序,它包含在一个简单的WebView中,在项目的assets文件夹中加载一个本地html文件 HTML有一个标记,用于调用(AJAX)外部服务,并期望得到一个表示.js文件名的字符串作为响应(比如,'test.js') 在test.js中有一个简单的函数声明,如下所示: var testFunction = function(){ // some code here } AJAX回调然后通过javascript构造一个指向.js文件的标记,并将其附加到文档的
var testFunction = function(){
// some code here
}
AJAX回调然后通过javascript构造一个指向.js文件的标记,并将其附加到文档的头部;然后调用testFunction:
$.ajax('externalService').done(function(response){
var script = // construct the script tag;
$('head').append(script);
testFunction();
});
重要提示:script标记指向外部.js文件,如
<script src="http://justatest.com/test.js">
。。。一切都很好
现在我尝试做同样的事情,将test.js放在项目的assets文件夹中。显然,我用相对路径更改了回调中创建的脚本的src:
<script src="test.js"></script>
但是当我试图调用函数testFunction时,我得到一个错误(testFunction没有定义)
本地路径是正确的(我将jquery.js放在test.js的同一个本地文件夹中,并将其直接加载到html中,没有错误)
我将所有属性(比如type=“text/javascript”)也放在标记中
那么,为什么webview不以这种方式加载本地.js文件呢
谢谢:)
编辑:我尝试了在该线程中找到的解决方案:
成功了 我尝试了在该线程中找到的解决方案: 成功了 我报告解决方案:
var scriptUrl = "test.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);
因此,如果我使用jquery append()方法,它将不起作用,但是如果我使用javascript appendChild方法,它将起作用……
var script=//构造脚本标记代码>您可以发布此相关代码吗?如何构造脚本标记?顺便说一句,为什么不使用getScript()jquery的方法或设置ajax请求的数据类型:“script”
!以下是相关代码:var脚本=$(“”)对于本地文件,src只是“test.js”。我不知道getScript()jquery的方法:),我来看看。另外,我不能在ajax请求中使用数据类型:“script”,因为响应实际上是一个JSON,包含一些信息和一个属性,该属性是一个带有js名称的字符串。然而,当我指向一个外部js文件时,一切都正常。。。问题只是当我指向本地文件时…我也尝试了var script=$(''+'')代码>未成功:/+1表示onload,onerror语法。。很难找到javascript方法的帮助。。该死的eclipse在开发期间也没有自动完成方法。。就像30年前在fotran开发一样。。