3

我试图获取编辑器生成的 div 的内容,

问题是这个 div 包含一个 iframe 并且 iframe 包含一个新文档

这是我的脚本

$(document).ready(function(){
        $("#save").click(function() 
        {
            var txt = $("#cke_1_contents").contents();
            console.log($("#cke_1_contents").contents());
        });
});

这是我想要得到的内容

<div id="cke_1_contents" class="cke_contents cke_reset" role="presentation" style="height: 400px;"><span id="cke_89" class="cke_voice_label">Press ALT 0 for help</span><iframe src="" frameborder="0" class="cke_wysiwyg_frame cke_reset" style="width: 100%; height: 100%;" title="Rich Text Editor, content" aria-describedby="cke_89" tabindex="0" allowtransparency="true"></iframe></div>
    <span id="cke_89" class="cke_voice_label">Press ALT 0 for help</span>
    <iframe src="" frameborder="0" class="cke_wysiwyg_frame cke_reset" style="width: 938px; height: 100%;" title="Rich Text Editor, content" aria-describedby="cke_89" tabindex="0" allowtransparency="true"></iframe>
        #document
        <html>....</html>
    </iframe>
<div>

我只得到 div 和 iframe 而没有 iframe 内的内容

谢谢你们的帮助

4

3 回答 3

2

首先,你的 iframe 的 src 属性是空的。如果要将外部文档加载到 iframe 中,则必须设置 src 属性(至少我不知道任何其他明智的方式)。

其次,请记住 iframe 受制于同源策略。因此,如果您的 iframe 正在从另一个域加载内容,则父文档通常无法访问 iframe 的内容。但是,有一些方法可以解决这个问题,我建议查看上述深入涵盖相同来源策略的链接,以及深入涵盖 iframe 的链接(包括使用 iframe 时如何处理相同来源策略。)

如果您需要从另一个域加载内容(我不知道,因为您的 src 属性为空),iframe 的一种替代方法是使用代理方法获取内容。基本上,您可以从服务器端发出 HTTP 请求,获取内容,然后在页面被提供之前将其添加到您的页面中。这可以使用PHP 中的 curl之类的东西毫不费力地完成。

于 2013-08-05T02:52:14.953 回答
1

CKEditor 有一个非常好的 JavaScript API,您可以使用它: http ://docs.ckeditor.com/#!/api

找到你需要的东西可能有点棘手。

GetContents请参阅此页面以查看操作(查看源代码查找方法): http : //rev.ckeditor.com/ckeditor/trunk/7596/_samples/api.html

function GetContents()
{
    // Get the editor instance that you want to interact with.
    var oEditor = CKEDITOR.instances.editor1;

    // Get editor contents
    // http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#getData
    alert( oEditor.getData() );
}
于 2013-08-05T04:18:56.637 回答
0

如果该新文档来自您的域名以外的其他地方,那么您将无法拥有它。要获得它,您需要使用服务器端编程。但如果它来自您的网站,那么是的。

var x=document.getElementById("myframe");
var y= x.contentDocument;
y.d.body.innerHTML; //here
于 2013-08-05T04:04:48.517 回答