Почему я не могу получить доступ к документу iframe с установленными атрибутами src или srcdoc? - PullRequest
0 голосов
/ 15 марта 2019
<html>
    <body>
    <!-- <iframe id="iff" srcdoc="<div>ok</div>"></iframe> -->
    <iframe id="iff" src="data:text/html;charset=utf-8,%3Cdiv%3Eok%3C%2Fdiv%3E"></iframe>
    <script>
        console.log(document.getElementById('iff').contentWindow.document)
    </script>
    </body>
</html>
  1. Я установил srcdoc (пробовал src также) <iframe>, но не могу получить доступ к реальному документу iframe (пробовал iframeElement.contentDocument также). Выходы Chrome (тоже пробовал Firefox): result

Я вижу в Получить документ IFrame из JavaScript в основном документе , что я не могу получить документ междоменного iframe, а также узнал из В чем разница между srcdoc = ". .. "and src =" data: text / html, ... "в , что src и srcdoc ведут себя по-разному в междоменном поведении. Но я пробовал оба, ни один не работает.

2. Когда я добавляю дочерний элемент в тело документа iframe ( с атрибутом src, установленным ), DOM обновляется, но не отображается на экране.

1 Ответ

0 голосов
/ 15 марта 2019

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

window.frames['iff'].document.myvar;

Это может быть полезно, если вы ищите iframe с URL:

var x=getIframeID("cool.php");
x.contentWindow.callafunction();

function getIframeID(iframeurl) {
    var iFs = top.document.getElementsByTagName('iframe');
    var x, i = iFs.length;
    while ( i-- ){
        x = iFs[i];
        if(iframeurl.indexOf(x.src)>=0) return (x.id);
        if (x.src == iframeurl)         return (x.id);
    }
    return("");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...