JS document.write () записывает скрипты в голову iframe - PullRequest
0 голосов
/ 16 января 2019

Может кто-нибудь объяснить мне, как работает document.write to iframe? У меня есть следующий код:

<html>
<body>
    <iframe id="iframe"></iframe>

<script>
    var code = '<scr' + 'ipt>console.log(window.frameElement.contentWindow.document.getElementById("test") );</scr' + 'ipt><div id="test"></div>';
    document.getElementById('iframe').contentWindow.document.open();
    document.getElementById('iframe').contentWindow.document.write(code);
    document.getElementById('iframe').contentWindow.document.close();
</script>
</body>

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

К сожалению, в реальной жизни я не знаю идентификатор iframe, я знаю только идентификатор div.

1 Ответ

0 голосов
/ 16 января 2019

Смотрите мою скрипку: https://jsfiddle.net/85bk3cr6/1/

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

HTML-код:

<html>
<body>
    <iframe id="iframe"></iframe>
</body>
</html>

Js код:

document.getElementById("iframe").contentWindow.document.write('\x3Cscript type="text/javascript" src="foo.js">\x3C/script>')
...