Javascript iframeinnerHTML

IT技术 javascript iframe innerhtml
2021-02-22 02:08:25

有谁知道如何从 IFRAME 中获取 HTML 我尝试了几种不同的方法:

document.getElementById('iframe01').contentDocument.body.innerHTML
document.frames['iframe01'].document.body.innerHTML
document.getElementById('iframe01').contentWindow.document.body.innerHTML

等等

6个回答

我想这就是你想要的:

window.frames['iframe01'].document.body.innerHTML 

编辑:

我确信这在 Chrome 和 Firefox 中不起作用,尽管它在 IE 中运行良好,这是我测试它的地方。回想起来,这是一个很大的错误

这将起作用:

window.frames[0].document.body.innerHTML 

我知道这并不是被问到的问题,但我不想删除答案,因为我认为它有它的位置。

我喜欢下面@ravz 的 jquery 答案。

这种方式在 Firefox 中不起作用也不会起作用,因为 Firefox 不支持 window.frames['frameId'] 仅 window.frames[0] window.frames[1] 等
2021-04-29 02:08:25
如果你想更明确,你可以说:window.frames['iframe01'].document.body.innerHTML
2021-05-04 02:08:25

有类似下面的东西会起作用。

<iframe id = "testframe" onload = populateIframe(this.id);></iframe>

// The following function should be inside a script tag

function populateIframe(id) { 

    var text = "This is a Test"
var iframe = document.getElementById(id); 

var doc; 

if(iframe.contentDocument) { 
    doc = iframe.contentDocument; 
} else {
    doc = iframe.contentWindow.document; 
}

doc.body.innerHTML = text; 

  }

如果您看一下JQuery,您可以执行以下操作:

<iframe id="my_iframe" ...></iframe>

$('#my_iframe').contents().find('html').html();

这是假设您的 iframe 父级和子级位于同一服务器上,这是由于Javascript 中的同源策略

请停止使用 jQuery 作为答案!
2021-04-16 02:08:25
同意使用 JQuery 作为答案真的很烦人!请求 JQuery 请求的人有吗?
2021-04-16 02:08:25
您正在获取 html 元素的 innerHTML 而不是正文,这是一个非常向后的方法来做到这一点。当有本地 DOM 属性用于检索您想要的内容(例如 .body)时,您应该避免 find 调用的开销。
2021-04-29 02:08:25
@Prestaul 有些人试图从性能、挑战和程序方面进行思考。其他人认为 jQuery 是所有问题的解决方案......
2021-05-01 02:08:25

康罗伊的回答是正确的。如果您只需要 body 标签中的内容,只需使用:

$('#my_iframe').contents().find('body').html();
最佳答案!谢谢!不要忘记: <head> <script src=" ajax.googleapis.com/ajax/libs/jquery/3.1.1 / ... > </head>
2021-05-08 02:08:25

不要忘记,出于安全考虑,您不能跨域。

因此,如果是这种情况,您应该使用JSON