<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.info(document.getElementById('iff').contentWindow.document)
</script>
</body>
</html>
srcdoc (также пробовал src) <iframe>, но не могу получить доступ к реальному документу iframe (также пытался iframeElement.contentDocument). Выходы Chrome (также пробовал Firefox):

Я вижу в Получить документ IFrame из JavaScript в основном документе, что не могу получить документ междоменного iframe, а также узнал из В чем разница между srcdoc = "..." и src = "data:text/html,..." в <iframe>?, что src и srcdoc ведут себя по-разному в отношении междоменного поведения. Но я пробовал оба, ни один не работает.
2. Когда я добавляю дочерний элемент в тело документа iframe (с установленным атрибутом src), DOM обновляется, но не отображается на экране.
@ zer00ne, но я также не могу манипулировать DOM iframe (с установленным src), например appendChild
Если у вас есть iframe с srcdoc и вы хотите перенести содержимое из него на родительскую страницу, используйте importNode() для копирования или adoptNode() для перемещения.
@ zer00ne Ну, это может сработать, спасибо! Но мне все же интересно, есть ли объяснение такому поведению в документах W3C?
Конфликты, с которыми вы сталкиваетесь, возникают из-за множества мер безопасности, сама среда, в которой вы тестируете, определяет поведение, отличное от следующего. Не верьте тому, что вам показывают инструменты разработчика, когда речь идет о доступе к iframe, это будет ЛОЖЬ
Теперь это имеет смысл. Большое спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте что-то вроде:
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("");
}
То, что в консоли, не то, что на самом деле с DOM в отношении фреймов.