Подтвердить что ты не робот

Когда следует использовать window.opener/window.parent/window.top

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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, который их содержит.

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

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

Если вы добавите более подробную информацию к своему вопросу, я могу привести другие более актуальные примеры.

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

  • Главное окно
    • Диалог 1
      • Диалог 2 открыт по диалогу 1

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

Итак, если "childwindow" является переменной для объекта окна диалога 2, а "window" - это переменная для окна окна "Диалог 1". После открытия диалога 2, но перед закрытием диалогового окна 1 сделайте присваивание, подобное этому:

childwindow.appMainWindow = window.opener

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

Надеюсь, что это поможет.

Ответ 3

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

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

Ответ 4

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