[英]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 包含的所有屬性,包括onload
和addEventListener
。 代理的主要目標是限制新創建的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.