InAppBrowser 注入脚本(使用 executeScript)
Posted
技术标签:
【中文标题】InAppBrowser 注入脚本(使用 executeScript)【英文标题】:InAppBrowser inject script (using executeScript) 【发布时间】:2013-09-05 10:50:02 【问题描述】:使用 code: 'some code'
参数的 InAppBrowser js 脚本注入运行良好,但使用 file: 'local file url'
参数时不能。
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstop', function()
ref.executeSript(file: "myscript.js");
);
如何使用文件参数注入脚本来注入我的本地 js 脚本?
需要绝对文件路径还是相对路径? 文件必须托管在子网站上吗?这似乎是一件神秘而复杂的事情,因为我有几行脚本,无法使用 ref.executeSript(codedetails, callback: "myscript.js");
将其全部嵌入
【问题讨论】:
【参考方案1】:我遇到了同样的问题。使用cordova3.1.0。
ref.executeScript(
file: "http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"
//webURL works fine with 'file'
, function()
$.get("js/myscript.js", function(data)
//workaround to obtain code using jQuery.get
ref.executeScript(
code: data
, function()
console.log('ref.executeScript done');
);
);
);
当我将文件 URL 设置为 webURL http://.... 时,
它成功了,但我不知道如何指向本地js文件,
所以我使用 $.get "js/myscript.js" 获取代码字符串。
示例代码说明:已经在phonegap App 上安装了jQuery,并且还在目标inAppBrowser 应用程序上尝试使用jQuery。以防万一。
【讨论】:
我在我的 PhoneGap 应用程序的开头添加了一行。 (假设起始页是 index.html)window.basePath = window.location.href.replace('index.html', '');
然后当我需要时我引用 basePath + 'js/handlebars/foo.js'
来加载脚本和图像从手机文件系统中提取.
一定花了很长时间才弄清楚这个解决方案@Ken!以上是关于InAppBrowser 注入脚本(使用 executeScript)的主要内容,如果未能解决你的问题,请参考以下文章
执行shell脚本三种方法的区别:(sh、exec、source)
为啥 ncat -exec 可以与 shell 脚本一起使用,但不能与 perl 脚本一起使用?