InAppBrowser注入脚本(使用executeScript)

8

使用{code: '一些代码'}参数进行InAppBrowser js脚本注入完美运行,但不适用于{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个回答

6

我遇到了同样的问题。使用的是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"获取代码字符串。

示例代码说明:jQuery已安装在phonegap应用程序上,并且还尝试在目标inAppBrowser应用程序上使用jQuery。以防万一。


2
我在我的PhoneGap应用程序开头包含以下行(假设起始页面为index.html)。window.basePath = window.location.href.replace('index.html', '');然后,当我需要时,我引用 basePath + 'js/handlebars/foo.js' 来加载从手机文件系统中提取的脚本和图像。 - user495368
肯恩,想出这个解决方案一定花了很长时间! - Matty J

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接