在 Chrome 和 Safari 上,window.open
方法在附加 onload
事件时可能会遇到问题。这是因为这两个浏览器对于 window.open
方法的实现和处理方式有所不同。
为了解决这个问题,您可以尝试使用以下方法:
window.addEventListener
方法来监听 load
事件,而不是直接在 window.open
方法中附加 onload
事件。const newWindow = window.open('https://example.com');
newWindow.addEventListener('load', () => {
console.log('Window loaded');
});
window.opener
属性来访问父窗口,并在父窗口中执行相应的操作。const newWindow = window.open('https://example.com');
newWindow.opener.postMessage('Window loaded', '*');
在上面的示例中,我们使用 window.opener.postMessage
方法向父窗口发送消息,以通知它新窗口已经加载完成。
需要注意的是,由于浏览器的安全策略,window.opener
属性可能会被禁用,因此在使用 window.opener
属性之前,请确保它可用。
总之,window.open
方法在 Chrome 和 Safari 上附加 onload
事件时可能会遇到问题,但可以通过使用 window.addEventListener
方法和 window.opener
属性来解决这些问题。
领取专属 10元无门槛券
手把手带您无忧上云