inapp浏览器窗口.open不会触发loadstart或loadstop事件

inapp browser window.open does not trigger loadstart or loadstop events

本文关键字:loadstart loadstop 事件 浏览器 窗口 open inapp      更新时间:2023-09-26

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

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行代码,但我花了整个周末的时间来找出问题所在

来自window.open:的文档

请注意,远程URL不会立即加载。当window.open()返回时,该窗口始终包含about:black。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);
}

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