Взаимодействие кросс-окна js между всплывающим окном и другим окном того же домена

Я пытаюсь открыть всплывающее окно из окна a на сайте example.com. затем закройте окно a и откройте другое окно b в том же домене (example.com). Можно ли получить доступ к DOM окна a из окна b и как?

Всплывающее окно открывается из окна a по

window.open('http://example.com/blah', 'somename', settings..), 

Выполнение того же из окна b с другим URL-адресом (показано ниже) работает

window.open("http://example.com/blah2", "somename" ...) 

Кажется, это предполагает, что доступ к окнам осуществляется по имени окна. Но я не смог найти способ получить доступ к DOM всплывающего окна с именем окна или без него. Как бы я это сделал?


person altunyurt    schedule 11.10.2009    source источник


Ответы (1)


Попробуйте что-то вроде

var newWind = window.open('http://example.com/blah', 'somename',settings);
if (newWind.opener == null) {
    newWind.opener = window;
}
// here you can access DOM of new window
var newDoc = newWind.document;
person Mushex Antaranian    schedule 11.10.2009
comment
Таким образом, всплывающее окно перезагружает URL-адрес, можно ли получить доступ к dom без перезагрузки URL-адреса? - person altunyurt; 11.10.2009
comment
о.. var newWind = window.open('', 'somename',settings); дает доступ к окну, где window.open('sameurl', 'somename', settings) снова загружает URL-адрес. Благодарность .. - person altunyurt; 11.10.2009
comment
Но это не вживую. Кажется, что Opener получает локальную копию дерева DOM, но не имеет доступа к фактическому дереву DOM, которое находится в другом окне. Открыватель может вносить изменения в локальную копию, но эти изменения не отражаются в открытом окне, и в большинстве случаев такие изменения бесполезны. Кроме того, я скептически отношусь к модификации newWind.opener = window; имеет какое-либо преимущество, т. е. я скептически отношусь к тому, будет ли фактическое окно, на которое ссылается newWind, иметь доступ к такой модификации. - person IAM_AL_X; 02.10.2018