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.htmlwindow.basePath = window.location.href.replace('index.html', ''); 然后当我需要时我引用 basePath + 'js/handlebars/foo.js' 来加载脚本和图像从手机文件系统中提取. 一定花了很长时间才弄清楚这个解决方案@Ken!

以上是关于InAppBrowser 注入脚本(使用 executeScript)的主要内容,如果未能解决你的问题,请参考以下文章

other漏洞

PHP漏洞全解-命令注入攻击

执行shell脚本三种方法的区别:(sh、exec、source)

为啥 ncat -exec 可以与 shell 脚本一起使用,但不能与 perl 脚本一起使用?

如何使用 Terraform local-exec 将命名参数传递给 powershell 脚本?

Cordova/PhoneGap 打开下载的文件 (InAppBrowser)