При открытии пустого дочернего окна с помощью window.open('', 'name') его событие загрузки не работает в Firefox. В то время как в хроме это работает.
посмотрите мою демонстрацию stackblitz — в chrome вы можете увидеть сообщение журнала консоли, а в Firefox — нет.
Также readyState в Firefox не работает должным образом и не обновляется.
Что мне не хватает? как это решить?
@souravsatyam нет, блокировки нет, дочернее окно открыто, см. демо.
Для меня код открывает окно в Chrome и Mozilla как
@souravsatyam, пожалуйста, прочитайте мой вопрос еще раз, проблема в том, что «событие загрузки не работает в Firefox».
Эй, в вашем фактическом коде window.open, а не в этом примере кода, вы пытаетесь открыть страницу в том же домене, что и ваше приложение, или во внешнем домене? @shemesh



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проблема заключается в функции стрелки.
win.onload = () = > { } делает ссылку из window.onload на анонимную функцию. Функция не запускается. Это равно win.onload = function() {}, что тоже не сработает.
Что будет работать, так это создание новой функции
win.onload = new function() {
console.info('--- new window loaded ---')
}
но это не привязка к событию onload
Согласно статье MDN , window.open возвращает экземпляр WindowProxy, который проксирует все свойства, содержащиеся в объекте Window, включая onload и addEventListener. Основная цель проксирования — ограничить вновь созданный window от несанкционированного доступа со стороны родителя window. Доступ контролируется браузером, который позволяет родительскому window взаимодействовать с дочерним экземпляром только в том случае, если обе эти вкладки соблюдают политику одинакового происхождения. Без этого правила безопасности любой может изменить или программно прочитать некоторую информацию, которая содержится на window любом другом сайте, непосредственно из своего кода.
На моей машине ваш репродукцию stackblitz не работает так, как вы ожидаете, даже в Chrome. Открытие нового Window с тем же источником устраняет проблему как в Chrome, так и в Firefox:
window.open('https://angular-child-window-load.stackblitz.io', 'kush', 'width=222, height=222, top=222, left=222');
Я думаю, что у вас могут быть изменены некоторые политики того же происхождения в конфигурации Chrome, или, может быть, есть другая локальная проблема.
я пытаюсь создать общий компонент, который открывает пустое (!) дочернее окно, а затем вставляет в него некоторые вещи. это означает, что дочернее окно не имеет URL-адреса. значит ли это, что я не могу подключиться к событию загрузки?
@shemesh Это означает, что в вашем случае у вас нет возможности получить доступ к дочернему окну из родительского. Родительское окно имеет какое-то происхождение, а дочернее окно не имеет того же происхождения, потому что отсутствие происхождения обрабатывается как другое происхождение. Таким образом, вы не можете подключиться ни к какому событию дочернего окна, и почти все данные дочернего окна нельзя даже прочитать из родительского. Я думаю, что вы можете сделать на своем сайте какую-то страницу с динамическим контентом и открыть новую вкладку с этой страницей, передав ей контент с родительской страницы.
Может быть блокировка всплывающих окон в firefox... проверьте настройки