html iframe

父页面

<html>
<head>
<script type="text/javascript">
    // 父页面变量
    var parentCount = '0';

    // 页面(含子页面)加载完成后执行方法
    function onload() {
        // 父页面获取iframe
        var iframe = window.document.getElementsByTagName('iframe')[0];
        alert(iframe.width);

        // 获取子页面中的js变量
        alert(iframe.contentWindow.childCount);

        // 获取子页面中的DOM对象
        alert(iframe.contentWindow.document.getElementById('child').value);
    }
</script>
</head>
<body onload='onload();'>
    <iframe src='http://localhost:8080/test/iframeTest.html' width='800px' height='600px'></iframe>

    <input type="text" id="parent" value="parent" />
</body>
</html>
<!-- 
跨页面操作涉及域的概念,放在服务器上面才能够正常使用。
如果在本地直接用浏览器打开(地址栏是file:///...)将会报错。
错误信息如下:
Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.

执行顺序:
首先加载父页面,然后加载子页面,故在子页面中能够获取到父页面的变量parentCount=0和父页面的parent元素。
在父页面中获取子页面变量及对象时需要等子页面加载完成。
-->

 子页面

<html>
<head>
<script type="text/javascript">
    // 子页面变量
    var childCount = '1';

    // 子页面获取iframe
    var iframe = window.parent.document.getElementsByTagName("iframe")[0];
    alert(iframe.height);

    // 获取父页面中的js变量 
    alert(window.parent.parentCount);

    // 获取父页面中的DOM对象 
    alert(window.parent.document.getElementById("parent").value);
</script>
</head>
<body>
    <input type="text" id="child" value="child" />
</body>
</html>

 

posted @ 2016-08-23 14:51  蒲木杉  阅读(1166)  评论(0编辑  收藏  举报