为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Javascript中获取身体的IFRAME内容?

如何在Javascript中获取身体的IFRAME内容?

动漫人物 2019-06-17 15:53:54
如何在Javascript中获取身体的IFRAME内容?<iframe id="id_description_iframe" class="rte-zone" height="200" frameborder="0" title="description">   <html>     <head></head>     <body class="frameBody">       test<br/>     </body>   </html></iframe>我想得到的是:test<br/>
查看完整描述

3 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

确切的问题是如何使用纯JavaScript,而不是jQuery。

但我总是使用jQuery源代码中可以找到的解决方案。它只是一行原生JavaScript。

对我来说,这是最好的,容易读的,甚至AFAIK获取iframes内容的最短方法。

先拿到你的irame

var iframe = document.getElementById('id_description_iframe');// orvar iframe = document.querySelector('#id_description_iframe');

然后使用jQuery的解决方案

var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

它甚至在InternetExplorer中工作,后者在contentWindow的属性iframe对象。大多数其他浏览器使用contentDocument属性,这就是为什么我们在这个或条件下首先证明这个属性的原因。如果没有设置,请尝试contentWindow.document.

在iframe中选择元素

然后你通常可以用getElementById()甚至querySelectorAll()对象中选择DOM元素iframeDocument:

if (!iframeDocument) {
    throw "iframe couldn't be found in DOM.";}var iframeContent = iframeDocument.getElementById('frameBody');
    // orvar iframeContent = iframeDocument.querySelectorAll('#frameBody');

调用iframe中的函数

只要window元素来自iframe调用一些全局函数、变量或整个库(例如:jQuery):

var iframeWindow = iframe.contentWindow;// you can even call jQuery or other frameworks/
/ if it is loaded inside the iframeiframeContent = iframeWindow.jQuery('#frameBody');// oriframeContent = iframeWindow.$('#frameBody');
// or even use any other global variableiframeWindow.myVar = window.myVar;
// or call a global functionvar myVar = iframeWindow.myFunction(param1 /*, ... */);

如果你观察到同源政策.


查看完整回答
反对 回复 2019-06-17
?
桃花长相依

TA贡献1860条经验 获得超8个赞

使用JQuery,尝试如下:

$("#id_description_iframe").contents().find("body").html()


查看完整回答
反对 回复 2019-06-17
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

它对我来说是完美的:

document.getElementById('iframe_id').contentWindow.document.body.innerHTML;


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 486 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信