Когда использовать окно.открывалка / окно.родительское окно.верхний


в JavaScript, когда использовать window.opener/window.parent/window.top ?

4 74

4 ответа:

  • window.opener относится к окну, которое называется window.open( ... ) чтобы открыть окно, из которого он называется
  • window.parent относится к родителю окна в <frame> или <iframe>
  • window.top относится к самому верхнему окну из окна, вложенного в один или несколько слоев <iframe> суб-окна

будут null (или undefined), когда они не имеют отношения к ситуации ссылающегося окна. ("Окно ссылки" означает окно в чьем контексте выполняется код JavaScript.)

Я думаю, что вам нужно добавить некоторый контекст к вашему вопросу. Однако основную информацию об этих вещах можно найти здесь:

window.opener https://developer.mozilla.org/en-US/docs/Web/API/Window.opener

я использовал окно.открывалка в основном при открытии нового окна, которое действовало как диалоговое окно, которое требовало ввода пользователя и должно было передавать информацию обратно в Главное окно. Однако это ограничено политикой происхождения, поэтому вам необходимо обеспечить как содержимое диалогового окна и открывающего окна загружается из одного источника.

window.parent https://developer.mozilla.org/en-US/docs/Web/API/Window.parent

я использовал это в основном при работе с IFrames, которые должны взаимодействовать с объектом window, который их содержит.

window.top https://developer.mozilla.org/en-US/docs/Web/API/Window.top

это полезно для обеспечения, взаимодействие с окно браузера верхнего уровня. Вы можете использовать его для предотвращения другого сайта от iframing вашего сайта, среди прочего.

если вы добавите еще несколько деталей к своему вопросу, я могу привести другие более важные примеры.

обновление: Есть несколько способов справиться с ситуацией.
У вас есть следующая структура:

  • Главное Окно
    • Диалог 1
      • Диалог 2 Открывается Диалогом 1

когда диалоговое окно 1 запускает код для открытия диалогового окна 2, после создания диалогового окна 2, у диалогового окна 1 Установите свойство на диалоговом окне 2, которое ссылается на открыватель диалогового окна 1.

так что если "дочернего окна" - это вы переменную для объекта диалогового окна 2 окна и "окна" - это переменная для Объекта 1 диалоговое окно. После открытия диалогового окна 2, но перед закрытием диалогового окна 1 выполните задание, подобное этому:

childwindow.appMainWindow = window.opener

после совершения задание выше, закрыть диалоговое окно 1. Затем из кода, выполняемого внутри dialog2, вы должны быть в состоянии использовать window.appMainWindow для ссылки на главное окно, объект окна.

надеюсь, что это помогает.

top, parent, opener (а также window, self и iframe) - это все объекты окна.

  1. window.opener -> возвращает окно, которое открывает или запускает текущем окне.
  2. window.top - > возвращает самое верхнее окно, если вы используете фреймы, это окно набора фреймов, если не используете фреймы, это то же самое, что окно или self.
  3. window.parent - > возвращает Родительский кадр текущего кадра или iframe. Родительским фреймом может быть окно набора фреймов или другой кадр, если у вас есть вложенные кадры. Если не использовать фреймы, parent совпадает с текущим окном или self

когда вы имеете дело с всплывающие окна окна.открывалка играет важную роль, потому что мы должны иметь дело с полями родительской страницы, а также дочерней страницы, когда мы должны использовать значения на родительской странице мы можем использовать окно.открывалка или нам нужны некоторые данные о дочернем окне или всплывающем окне во время загрузки, а затем мы снова можем установить значения с помощью окна.открывалка