如何用js打印 iframe里面的内容

JavaScript019

如何用js打印 iframe里面的内容,第1张

由于浏览器安全策略的限制,iframe的src地址必须为同域才可以获取内容。

我做了一个案例,分别创建了一个父页面(parent.html)以及一个子页面(children.html)。代码如下:

父页面(parent.html):

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>我的父页面</title>

</head>

<body>

    <iframe src="children.html" frameborder="0"></iframe>

    <script type="text/javascript">

        //获取iframe的对象。

        var iframe = document.querySelector('iframe')

        //必须使用onload来确保iframe页面内容加载完毕后再获取。

        //如果在未渲染完毕就获取,将得到“空”的结果。

        iframe.onload = function(){

            //先通过contentDocument获取iframe的文档对象。

            //再通过querySelector来获取body的对象。

            //最后使用innerHTML来获取body的HTML内容。并打印。

            alert(iframe.contentDocument.querySelector("body").innerHTML)

        }

    </script>

</body>

</html>

子页面(children.html):

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>我的子页面</title>

</head>

<body>

    <p>我是子页面P元素的内容</p>

    <div id="name">我是子页面ID为name的内容</div>

</body>

</html>

其中在父页面中书写了获取子页面内容的JavaScript代码。

示例中是获取子页面body中的全部内容。结果如下:

给每个iframe加上id,去不同的id名,window.top.document.getElementById("id名").contentWindow获取这个iframe的window对象,然后console.log()输出一下

父页面访问iframe的内容,只能是同域,或同一主域,通过设置相同document.domain才能访问,否则,父页面没有权限访问iframe的内容。如满足上述条件,只需为iframe绑定onload事件,然后用document.getElementById('#iframeId').contentWindow.location.href来得到当前iframe中页面的url。