innerHTML返回空白?

时间:2012-06-18 14:25:12

标签: jquery wysiwyg innerhtml

这是一个罗嗦的问题,所以我会尝试尽可能具体。

我在两个独立的容器中有两个所见即所得的文本编辑器。在on <a>标签上运行的函数中,一个容器向上滑动并插入另一个容器之前。这导致所见即所得盒完全破坏,因此我将其删除然后重新初始化。我遇到的问题是获取其中的内容。

这是wysiwyg的HTML结构:

    <div class="rightFieldContainer">
        <div class="wysiwyg" style="...">
             <ul class="panel" role="menu">...</ul>
             <div style="clear: both;">...</div>
             <iframe frameborder="0" style="..." tabindex="0">
                 <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
                     <head>...</head>
                     <body style="..." class="wysiwyg">
                        <b _moz_dirty="">WHAT I'M TRYING TO GET</b></strike><br>
                     </body>
                 </html>
             <iframe>
          ... (all remaining tags are closed)

内容的路径是我的函数指定如下:

     var content = $("#someContainer1").find(".rightFieldContainer").children(" .wysiwyg").children()[2].contentWindow.document.body.innerHTML;

使用innerHTML返回空白,html返回undefined。更令人好奇的是,如果我使用相同/相似的路径来获取另一个永远不会被移动的文本框的内容,它就可以正常工作。

我理解,由于问题本身有点模糊,所以不可能希望得到一个明确的答案,但只是替代innerHTML或者它可能不起作用的理由。感谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试过其他选择器来确保拉动iframe的主体?

var content = $("#someContainer1").find(".rightFieldContainer > div.wyiswyg > iframe body.wysiwyg").html();

答案 1 :(得分:0)

iframe中的内容无法使用父文档中的选择器进行导航。要获取iframe的文档,您需要执行以下操作:

$("#someContainer1").find(".rightFieldContainer").children("iframe").contents();

.contents()获取iframe的文档,以便您可以从父页面中查找内容,假设iframe的内容位于同一个域中。

var content = $("#someContainer1").find(".rightFieldContainer").children("iframe").contents().find(".wysiwyg").html();

为了简化这一点,你应该给你的iframe一个类/ id并直接选择它:

var content = $("#someContainer1").find("#youriframe").contents().find(".wysiwyg").html();