簡體   English   中英

子 window 加載事件在 Firefox 上不起作用

[英]Child window load event not working on Firefox

當使用window.open('', 'name')打開一個空白子 window 時,它的加載事件在 Firefox 中不起作用。 雖然在 chrome 中它確實有效。

看我的stackblitz 演示- 在 chrome 中你可以看到控制台日志消息,但在 Firefox 中你看不到。

Firefox 中的readyState也未按預期工作且未更新。

我錯過了什么? 如何解決這個問題?

根據MDN 文章window.open返回WindowProxy實例,它代理了Window object 包含的所有屬性,包括onloadaddEventListener 代理的主要目標是限制新創建的window從父window未經授權的訪問。 訪問由瀏覽器控制,僅當這兩個選項卡都滿足同源策略時,才允許父window與子實例交互。 如果沒有此安全規則,任何人都可以直接從他們的代碼中修改或以編程方式讀取任何其他站點的window包含的一些信息。

在我的機器上,即使在 Chrome 中,您的 stackblitz repro 也無法正常工作。 打開具有相同來源的新Window可修復 Chrome 或 Firefox 中的問題:

window.open('https://angular-child-window-load.stackblitz.io', 'kush', 'width=222, height=222, top=222, left=222');

我認為您的 Chrome 配置中可能修改了一些同源策略,或者可能存在另一個本地問題。

問題出在箭頭 function 上。

win.onload = () = > { }window.onload引用到匿名 function。 function 不運行。 它等於win.onload = function() {}也不會運行。

什么會起作用是創建一個的 function

win.onload = new function() {
    console.log('--- new window loaded ---')
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM