В JavaScript, когда использовать window.opener
/ window.parent
/ window.top
?
Ответы:
window.opener
относится к окну, которое вызывалось window.open( ... )
для открытия окна, из которого оно вызываетсяwindow.parent
относится к родителю окна в <frame>
или<iframe>
window.top
относится к самому верхнему окну из окна, вложенного в один или несколько слоев <iframe>
вложенных оконОни будут null
(или могут быть undefined
), когда они не имеют отношения к ситуации ссылающегося окна. («Ссылающееся окно» означает окно, в контексте которого выполняется код JavaScript.)
window.open()
отправке страницы. Теперь это дочернее окно открывает другое дочернее окно с тем же window.open()
закрытием. Теперь, когда я отправляю своего второго ребенка (первого ребенка больше нет), я хотел бы получить доступ к элементам страницы моей главной страницы. Возможно ли это от второго ребенка, когда первого больше нет?
window.opener.opener
прежде чем промежуточная страница исчезнет.
Я думаю, вам нужно добавить контекст к вашему вопросу. Однако основную информацию об этих вещах можно найти здесь:
window.opener
https://developer.mozilla.org/en-US/docs/Web/API/Window.opener
Я использовал window.opener в основном при открытии нового окна, которое действовало как диалоговое окно, которое требовало ввода данных пользователем и передачи информации обратно в главное окно. Однако это ограничено политикой происхождения, поэтому вам необходимо убедиться, что содержимое диалогового окна и окно открывания загружаются из одного источника.
window.parent
https://developer.mozilla.org/en-US/docs/Web/API/Window.parent
Я использовал это в основном при работе с IFrames, которым необходимо взаимодействовать с объектом окна, который их содержит.
window.top
https://developer.mozilla.org/en-US/docs/Web/API/Window.top
Это полезно для обеспечения взаимодействия с окном браузера верхнего уровня. Вы можете использовать его, помимо прочего, для предотвращения использования iframe другим сайтом.
Если вы добавите больше деталей к своему вопросу, я могу привести другие, более подходящие примеры.
ОБНОВЛЕНИЕ:
есть несколько способов справиться с ситуацией.
У вас следующая структура:
Когда диалоговое окно 1 запускает код для открытия диалогового окна 2, после создания диалогового окна 2 диалоговое окно 1 должно установить свойство в диалоговом окне 2, которое ссылается на средство открытия диалогового окна 1.
Итак, если "childwindow" - это ваша переменная для объекта окна диалога 2, а "window" - это переменная для объекта окна диалога 1. После открытия диалогового окна 2, но перед закрытием диалогового окна 1 сделайте следующее назначение:
childwindow.appMainWindow = window.opener
После выполнения указанного выше назначения закройте диалоговое окно 1. Затем из кода, запущенного внутри dialog2, вы сможете использовать его
window.appMainWindow
для ссылки на главное окно, объект окна.
Надеюсь это поможет.
window.open()
отправке страницы. Теперь это дочернее окно открывает другое дочернее окно с тем же window.open()
закрытием. Теперь, когда я отправляю своего второго ребенка (первого ребенка больше нет), я хотел бы получить доступ к элементам страницы моей главной страницы. Возможно ли это от второго ребенка, когда первого больше нет?
top, parent, opener (а также window, self и iframe) - все это объекты окна.
window.opener
-> возвращает окно, которое открывает или запускает текущее всплывающее окно.window.top
-> возвращает самое верхнее окно, если вы используете фреймы, это окно набора фреймов, если фреймы не используются, это то же самое, что window или self.window.parent
-> возвращает родительский фрейм текущего фрейма или iframe. Родительский фрейм может быть окном набора фреймов или другим фреймом, если у вас есть вложенные фреймы. Если фреймы не используются, родительский элемент совпадает с текущим окном или самим собой.когда вы имеете дело со всплывающими окнами, window.opener играет важную роль, потому что мы должны иметь дело с полями родительской страницы, а также дочерней страницы, когда нам нужно использовать значения на родительской странице, мы можем использовать window.opener или нам нужны некоторые данные в дочернем окне или во всплывающем окне во время загрузки, мы снова можем установить значения с помощью window.opener