在工作学习中, 如果要求操作页面中iframe怎么办呢?或者说在页面中的iframe中又想操作父页面的元素呢?下面,跟大家详细解释说明:

首先选取iframe这个元素,通过dom.contentWindow得到iframe的window对象,接下来就可以通过这个对象去做你想做的事情了,如下面的例子:

<body>
    <span id="fontWrap">父页面</span><span>测试</span>
    <button>改变iframe字体颜色</button>
    <iframe src="https://www.baidu.com"></iframe>
    <script>
        var oBtn=document.querySelector("button");
        var oIframe=document.querySelector("iframe");
        oBtn.onclick=function(){
            //oIframe.contentWindow.document.body.style.color="red";//没有兼容性
            oIframe.contentDocument.body.style.color="green";//IE8以下不支持
        }
        oIframe.onload=function(){
            alert(1);//IE8下不兼容  只能用绑定的形式(attachEvent)
        }
    </script>
</body>

那如果iframe内向操作父页面呢,如下面的例子:

<body>
    子页面2
    <button id="btn">改变父页面的字体颜色</button>
    <button id="btn2">改变顶层页面的字体颜色</button>
    <script>
        var oBtn=document.getElementById("btn");
        var oBtn2=document.getElementById("btn2");
        oBtn.onclick=function(){
            window.parent.document.body.style.color="yellow";//window.parent 得到父页面的window对象
        }
        oBtn2.onclick=function(){
            window.top.document.body.style.color="yellow";//window.top 得到最顶层页面的window对象
        }
    </script>
</body>

那么 现在有一个小Demo:禁止其他用户把自己的页面放入iframe中, 联系上文,应该是不难实现吧,具体来看一看

if(window!=window.top){
            window.top.location.href=window.location.href;
        }