首页 > 解决方案 > 为什么我无法访问设置了 src 或 srcdoc 属性的 iframe 文档?

问题描述

<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. 我设置了srcdocsrc也试过了)<iframe>,但无法访问iframeiframeElement.contentDocument也试过了)的真实文档。Chrome 输出(也尝试过 Firefox): 结果

我在Get IFrame 的文档中看到,从主文档中的 JavaScript 中我无法获取跨域 iframe 的文档,并且还从中了解到srcdoc="..." 和 src="data:text/html 之间的区别是什么,..." 在 <iframe> 中?并且在跨域行为方面表现不同srcsrcdoc但我两种都试过了,都没有。

2. 当我将一个子元素附加到 iframe 的文档主体(带有src属性集)时,DOM 会更新,但它不会显示在屏幕上。

标签: javascripthtmldomiframe

解决方案


尝试类似:

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

如果您使用 url 查找 iframe,这会很有用:

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("");
}

推荐阅读