Коли використовувати в 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
Це корисно для забезпечення взаємодії з вікном браузера верхнього рівня. Ви можете використовувати його для запобігання тому, щоб інший сайт не вносив рамки у ваш веб-сайт, серед іншого.
Якщо ви додасте трохи детальніше до свого запитання, я можу надати інші більш відповідні приклади.
ОНОВЛЕННЯ.
Існує кілька способів вирішити вашу ситуацію.
Ви маєте таку структуру:
Коли діалогове вікно 1 запускає код для відкриття діалогового вікна 2, після створення діалогового вікна 2 діалогове вікно 1 має задати властивість діалогового вікна 2, яке посилається на відкривач діалогового вікна 1.
Отже, якщо "дитяче вікно" - це змінна для об'єкта вікна діалогового вікна 2, а "вікно" - це змінна для віконного об'єкта Діалогове вікно 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
-> повертає верхнє вікно, якщо ви використовуєте кадри, це вікно набору фреймів, якщо не використовуєте фрейми, це те саме, що вікно або self.window.parent
-> повертає батьківський кадр поточного кадру або iframe. Батьківський кадр може бути вікном набору кадрів або іншим кадром, якщо у вас є вкладені кадри. Якщо не використовується фрейми, батьківський елемент збігається з поточним вікном або самостійнимколи ви маєте справу зі спливаючими вікнами window.opener відіграє важливу роль, оскільки нам доводиться мати справу з полями батьківської сторінки, а також дочірньої сторінки, коли нам потрібно використовувати значення на батьківській сторінці, ми можемо використовувати window.opener або ми хочемо отримати деякі дані у дочірньому вікні або спливаючому вікні під час завантаження, тоді ми знову можемо встановити значення за допомогою window.opener