使用jQuery获取iframe的html内容

Mat*_*adt 26 javascript iframe jquery dom

我正在尝试定制OpenCms(基于java的开源CMS),它使用嵌入式FCKEditor,这是我正在尝试使用js/jQuery访问.

我尝试获取iframe的html内容,但是,总是将null作为返回值.这就是我尝试从iframe中获取html内容的方法:

var editFrame = document.getElementById('ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame');
alert( $(editFrame).attr('id') );         // returns the correct id
alert( $(editFrame).contents().html() );  // returns null (!!)
Run Code Online (Sandbox Code Playgroud)

查看屏幕截图,我想要访问的是"LargeNews1/Teaser"html部分,该部分目前包含值"Newsline en ...".下面你还可以看到Firebug中的html结构.

但是,$(editFrame).contents().html()返回null并且我无法找出原因,而$(editFrame).attr('id')返回正确的id.

iframe内容/ FCKEditor位于同一站点/域上,没有跨站点问题.

在此输入图像描述

iframe的Html代码位于http://pastebin.com/hPuM7VUz

更新:

这是一个有效的解决方案:

var editArea = document.getElementById('ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame').contentWindow.document.getElementById('xEditingArea');                        
$(editArea).find('iframe:first').contents().find('html:first').find('body:first').html('some <b>new</b><br/> value');
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 53

.contents().html()无法获取iframe的html代码.您可以执行以下操作来获取它:

$(editFrame).contents().find("html").html();
Run Code Online (Sandbox Code Playgroud)

那应该为你返回iframe中的所有html.或者您也可以使用"body"或"head"代替"html"来获取这些部分.

  • 这适用于Firefox,但不适用于Chrome.我刚刚得到<HEAD> </ HEAD> <BODY> </ BODY>. (2认同)

Hem*_*lia 7

你可以把内容作为

$('#iframeID').contents().find('#someID').html();
Run Code Online (Sandbox Code Playgroud)

但框架应该在同一个域中参考http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/