inapp browser window.open不会触发loadstart或loadstop事件

时间:2016-07-25 06:45:39

标签: javascript window.open inappbrowser

我的代码非常简单,但它不会触发任何加载事件 - 窗口会打开页面加载,但不会触发事件。

var ref = window.open('http://localhost:3000/#/login','_blank','location=no'); 

ref.addEventListener('loadstart', function(event) {
    log.info('in loadstart ');
});

ref.addEventListener('loadstop', function(event){
    log.info('in loadstop ');
});

https://plnkr.co/edit/ubEk8UN6SGXkYV7PgFZZ?p=preview - 使用Plunkr代码查看问题并建议解决方案。

简单的10-15行代码但是我周末吃掉了解出了什么问题

1 个答案:

答案 0 :(得分:2)

来自window.open的文档:

  

请注意,远程网址不会立即加载。当window.open()返回时,窗口始终包含about:blank。 URL的实际提取是延迟的,并在当前脚本块完成执行后启动。窗口创建和引用资源的加载是异步完成的。

因此,请尝试将事件侦听器包装在window.setTimeout

function openInApp(){
    var ref = window.open('http://google.com/','_blank','location=no'); 
    window.setTimeout(function(){
      ref.addEventListener('loadstart', function(event) {
          console.log('in loadstart ');
          alert('start: ' + event.url);
      });
    }, 1000);
}

假设你没有同源问题,现在应该可以了。