2

这是一个冗长的问题,所以我会尽量具体。

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

这是所见即所得的 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 的替代或它可能不起作用的原因表示赞赏。谢谢。

4

2 回答 2

0

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

var content = $("#someContainer1").find(".rightFieldContainer > div.wyiswyg > iframe body.wysiwyg").html();
于 2012-06-18T14:34:44.510 回答
0

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

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

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

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

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

var content = $("#someContainer1").find("#youriframe").contents().find(".wysiwyg").html();
于 2012-06-18T14:41:04.077 回答