我目前正在尝试定制一些OpenCms (基于java的开源内容管理系统),它使用的是FCKEditor embedded,这也是我尝试使用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 (!!)
查看屏幕截图,我想访问的是'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');
发布于 2012-01-11 13:19:35
.contents().html()
无法获取IFRAME的HTML代码。您可以执行以下操作来获取它:
$(editFrame).contents().find("html").html();
这将为您返回IFRAME中的所有HTML。或者您也可以使用"body“或"head”来代替"html“来获取这些部分。
发布于 2012-01-11 13:20:33
你可以像下面这样获取内容
$('#iframeID').contents().find('#someID').html();
但是框架应该在相同的域中,请参考http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/
发布于 2012-01-11 13:11:36
我建议将第一行替换为:
var editFrame = $('#ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame');
使用以下命令对第二个警报表达式执行...and:
editFrame.html()
另一方面,如果你更喜欢在没有jquery的情况下完成同样的任务,jquery(更酷,我的意思是)可以只使用JavaScript:
var editFrame = document.getElementById('ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame');
alert(editFrame.innerHTML);
https://stackoverflow.com/questions/8814411
复制相似问题