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

发布网友 发布时间:2022-04-22 02:14

我来回答

4个回答

热心网友 时间:2022-04-22 16:58

由于浏览器安全策略的*,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中的全部内容。结果如下:

热心网友 时间:2022-04-22 18:16

var f = document.getElementById('iframe-id');  //获取到iframe标签元素
var win = f.contentWindow;  //iframe中的window对象
var doc = f.contentDocument;  //iframe中的document对象
var text = doc.getElementsByTagName("html")[0].innerHTML;  //获取html标签下的内容

热心网友 时间:2022-04-22 19:51

js 跨域名是取不到iframe里的信息的, 除非同一个域名下. 如果是同一个域名下的. var win = document.getElementById('frmid').contentWindow; var frmobj = win.document.getElementById('控件');

热心网友 时间:2022-04-22 21:42

$("iframe")[0].contentDocument || $("iframe")[0].contentWindow.document

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com