Доступ к элементу за пределами iframe

У меня есть файл: 1.html и iframe внутри него.
Я хочу получить доступ к элементу (let myelement), который существует в 1.html (вне iframe) из iframe.
Как я могу это сделать?
Я пробовал:

top.getElementById("myelement")
top.document.getElementById("myelement")  
parent.getElementById("myelement")
parent.document.getElementById("myelement")

но это не сработало!!

Ответ 1

Связь между iframe и родительским документом невозможна для ресурсов из разных источников. Он будет работать только в том случае, если iframe и содержащая его страница принадлежат одному хосту, порту и протоколу - например, http://example.com:80/1.html и http://example.com:80/2.html.

Для ресурсов из window.postMessage источников вы можете использовать window.postMessage для связи между ними, но это полезно только в том случае, если браузер поддерживает этот метод и если вы контролируете оба ресурса.

Изменить - при условии, что оба ресурса принадлежат одному источнику

В iframe window.parent ссылается на глобальный объект родительского документа, а не на сам объект документа. Я считаю, что вам нужно будет использовать parent.document.getElementById

Ответ 3

Связь между iframe и родительским документом невозможна для ресурсов с перекрестным происхождением

что во многих отношениях ошибочно, я даже не хочу знать, с чего начать. Конечно, междоменные запросы и обмены алгоритмов имеют долгую историю, они хорошо документированы и теперь работают, можно запустить JSON-запрос или даже простые XMLHttp-запросы через JQuery, например, вы даже можете загрузить целые .js- файлы И вставлять их в свой код - для инъекционного кода в удаленных источниках, конечно, нужен соответствующий интерфейс; можно достичь такой цели путем общения с ответственными лицами, просто спросите их красиво и, возможно, они будут сотрудничать, если ваш проект имеет смысл и имеет свое применение.

Чтобы ответить на вопрос: доступ к целым документам привел бы к необходимости пересылки его заранее - я бы порекомендовал XML для этой цели, потому что DOM-дерево и XML почти взаимозаменяемы. Загрузите дерево через .get (.ajax для удаленные хосты), append до этого и получить доступ к нему так, как вы хотите... звучит легко и если у вас есть некоторый опыт, это легко. Если вы когда-либо читали "кросс-домен" и "невозможно" в том же предложении снова, вы могли бы также игнорировать плакат - там много людей, которые не знают, о чем они говорят, -)