这是一个冗长的问题,所以我会尝试尽可能具体。
我有两个所见即所得文本编辑器,位于两个单独的容器中。在 <a>
的 onclick 上运行的函数中标签时,一个容器会向上滑动并插入到另一个容器之前。这会导致所见即所得框完全损坏,因此我将其删除,然后重新初始化它。我遇到的问题是获取其中的内容。
这是所见即所得的 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 返回未定义。更好奇的是,如果我使用相同/相似的路径来获取另一个永远不会移动的文本框的内容,它工作得很好。
我知道不可能希望得到一个明确的答案,因为问题本身有点模糊,但只是innerHTML的替代方案或它可能不起作用的原因值得赞赏。谢谢。
最佳答案
无法使用父文档中的选择器来导航 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();
关于jquery - innerHTML 返回空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11084923/