<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/>
<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/>
确切的问题是如何使用纯 JavaScript 而不是 jQuery 来做到这一点。
但我总是使用可以在 jQuery 源代码中找到的解决方案。它只是一行原生 JavaScript。
对我来说这是最好的,简单的可读性,甚至据我所知最短得到I帧内容的方式。
首先获取您的 iframe
var iframe = document.getElementById('id_description_iframe');
// or
var iframe = document.querySelector('#id_description_iframe');
然后使用jQuery的解决方案
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
它甚至可以在 Internet Explorer 中工作,它
contentWindow
在iframe
对象的属性期间执行此技巧。大多数其他浏览器使用该contentDocument
属性,这就是我们在此 OR 条件中首先证明该属性的原因。如果未设置,请尝试contentWindow.document
。
选择 iframe 中的元素
然后你通常可以使用getElementById()
甚至querySelectorAll()
从 中选择 DOM-Element iframeDocument
:
if (!iframeDocument) {
throw "iframe couldn't be found in DOM.";
}
var iframeContent = iframeDocument.getElementById('frameBody');
// or
var 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 iframe
iframeContent = iframeWindow.jQuery('#frameBody');
// or
iframeContent = iframeWindow.$('#frameBody');
// or even use any other global variable
iframeWindow.myVar = window.myVar;
// or call a global function
var myVar = iframeWindow.myFunction(param1 /*, ... */);
笔记
如果您遵守同源策略,这一切都是可能的。
使用 JQuery,试试这个:
$("#id_description_iframe").contents().find("body").html()
它非常适合我:
document.getElementById('iframe_id').contentWindow.document.body.innerHTML;
AFAIK,不能以这种方式使用 Iframe。您需要将其 src 属性指向另一个页面。
这是使用平面旧javascript获取其正文内容的方法。这适用于 IE 和 Firefox。
function getFrameContents(){
var iFrame = document.getElementById('id_description_iframe');
var iFrameBody;
if ( iFrame.contentDocument )
{ // FF
iFrameBody = iFrame.contentDocument.getElementsByTagName('body')[0];
}
else if ( iFrame.contentWindow )
{ // IE
iFrameBody = iFrame.contentWindow.document.getElementsByTagName('body')[0];
}
alert(iFrameBody.innerHTML);
}
使用content
iframe中与JS:
document.getElementById('id_iframe').contentWindow.document.write('content');