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

 我来答
张恺阳
2017-04-12 · 知道合伙人软件行家
张恺阳
知道合伙人软件行家
采纳数:166 获赞数:532
开发过各种类型网站及APP等,如有相关问题可以随时向我提问。

向TA提问 私信TA
展开全部

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

772807886
2017-02-21 · TA获得超过977个赞
知道小有建树答主
回答量:218
采纳率:100%
帮助的人:120万
展开全部
  • 如果iframe的域名与外部父网页的域名相同(具体请参考js同源策略),则可以使用如下代码获取iframe里面的内容:

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标签下的内容
  • 如果iframe的域名与外部父网页的域名不相同,则父网页与子网页由于js同源策略而相互隔离,不允许互相访问。这是由于浏览器的安全性决定的,无法改变。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小晨日阂协8608
2016-10-16 · 超过28用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:40.2万
展开全部
js 跨域名是取不到iframe里的信息的, 除非同一个域名下. 如果是同一个域名下的. var win = document.getElementById('frmid').contentWindow; var frmobj = win.document.getElementById('控件');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
执迷o不悟
2016-11-03 · 超过12用户采纳过TA的回答
知道答主
回答量:36
采纳率:33%
帮助的人:9.9万
展开全部
$("iframe")[0].contentDocument || $("iframe")[0].contentWindow.document
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式