在inAppBrowser中导航后,executeScript不起作用

时间:2014-03-27 15:43:01

标签: cordova inappbrowser

我试图将代码注入通过InAppBrowser打开的网站:

var inappbrowser = window.open('http://example.com', '_blank', 'location=no,toolbar=no');

为此,我使用(不完全是在这种结构中,但效果相同):

var loop;
inappbrowser.addEventListener('loadstop', function(event) {
    console.log('page finished loading - ' + JSON.stringify(event));
    clearInterval(loop);
    loop = setInterval(function() {
        console.log('checking for request');
        inappbrowser.executeScript({
            code: '1+2'
        }, function(result) {
            console.log('received: ' + result);
        });
    }, 500);
});

它与初始页面一起工作正常,但是一旦我从InAppBrowser内部导航到另一个页面,就不会执行任何脚本。事件有效,循环有效,但'received: [3]'不再记录。

目前安装的插件是:

  • InAppBrowser
  • 控制台
  • BarcodeScanner

InAppBrowser和BarcodeScanner都直接从他们的Github存储库安装。

  • Cordova版本:3.3(同样尝试3.4,结果相同)
  • Xcode:5.0.2
  • iOS目标版本:7

我总是使用cordova prepare,然后直接在iPad Air上使用Xdebug。我也试过cordova build ios

我还注意到该脚本稍后会执行,而导航到另一个页面。 在初始页面上滚动时,它也会运行。

有没有人知道这里发生了什么?此外,其他人也会这样做吗?

提前多多感谢!我已经研究过,从零开始在全新的cordova项目中,基本上花了一整天才发生这种奇怪的事情......

1 个答案:

答案 0 :(得分:2)

所以似乎问题是循环......它必须在loadstart清除。

所以以下解决了它:

self.inappbrowser.addEventListener('loadstart', function(event) {

    trace('loading page - ' + JSON.stringify(event));

    clearInterval(loop);
});

希望这对其他人也有帮助!