在iOS Chrome,Safari中无法触发pagehide和/或beforeunload

时间:2018-11-14 02:59:28

标签: ios angular javascript-events event-handling mobile-safari

需要您的一些帮助人员。 我试图在用户尝试离开当前浏览器(刷新,关闭标签和窗口,从浏览器单击后退按钮)时提示用户。我在 IOS移动设备上遇到此问题,它不会触发网页隐藏和/或卸载前

我知道safari不再支持beforeunload事件,因此我已经使用类似的逻辑为pagehide添加了一个事件侦听器,并且也不会触发。代码是用角度编写的。

尝试的方法:

// Method decorator, Did not work for both
@Hostlistner(window:pagehide), @Hostlistner(window:beforeunload)

doSomething(event:any){
 event.returnValue = true;
 return true;
}

// Component host property, Also tried this on beforeunload, did not work for both
@Component({
...
host: "(window:pagehide)" : "doSomething($event)"
})

// Plain javascript, have tried pagehide too, did not work for both
window.onbeforeunload = (event) => {
  event.returnValue = true;
  return true;
};

//Also tried binding it via addEventListener method of window/document, did not work for both
window.addEventListener('beforeunload',  (event) => {
  this.log("before unload");
  event.returnValue = true;
  return true;
});

已经通过stackblitz进行了尝试:https://stackblitz.com/edit/angular-qkezha?file=src%2Fapp%2Fapp.component.ts

用于测试问题的设备:iPhone 6,IOS 12.1

适用于Chrome和Safari的Mobile IOS上出现此问题,尚未在Firefox中对其进行测试,但我怀疑它是否也可以在Firefox上运行。代码可在Android Chrome和Windows Desktop Chrome上运行

我已经在这上待了几天了。在这里和那里搜索。非常感谢任何帮助或提示。谢谢大家!

0 个答案:

没有答案