我试图将代码注入通过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都直接从他们的Github存储库安装。
我总是使用cordova prepare
,然后直接在iPad Air上使用Xdebug。我也试过cordova build ios
。
我还注意到该脚本稍后会执行,而导航到另一个页面。 在初始页面上滚动时,它也会不运行。
有没有人知道这里发生了什么?此外,其他人也会这样做吗?
提前多多感谢!我已经研究过,从零开始在全新的cordova项目中,基本上花了一整天才发生这种奇怪的事情......
答案 0 :(得分:2)
所以似乎问题是循环......它必须在loadstart清除。
所以以下解决了它:
self.inappbrowser.addEventListener('loadstart', function(event) {
trace('loading page - ' + JSON.stringify(event));
clearInterval(loop);
});
希望这对其他人也有帮助!