2013-10-30 46 views
-1

如何读取ckeditor文本框而不是普通文本框?我的代码有我试过CKEditor的代码(但千万如何读取ckeditor文本框而不是JavaScript中的普通文本框?

这是从一个iframe读取文本框的代码(的jsfiddle:http://jsfiddle.net/RTBJQ/12/):

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
     <title>Copy to iframe 1 to iframe 2</title> 
    </head> 
    <body> 
     <iframe src="http://fiddle.jshell.net/W88j8/show/" id="iframe1" height="600" width="500"></iframe> 
     <button id="copyButton">Copy</button> 
     <iframe id="iframe2" height="600" width="500"></iframe> 
     <script> 
      window.onload = function(){ 
       var iframe1 = document.getElementById('iframe1'); 
       var iframe2 = document.getElementById('iframe2'); 

       //After you will be able to use the DOM of the 2 iframes to read content 
       var oDoc1 = (iframe1.contentWindow || iframe1.contentDocument); 
       if (oDoc1.document) oDoc1 = oDoc1.document; 
       var oDoc2 = (iframe2.contentWindow || iframe2.contentDocument); 
       if (oDoc2.document) oDoc2 = oDoc2.document; 

       //Where we gonna output the datas 
       var outputBody = oDoc2.body; 

       var copyButton = document.getElementById('copyButton'); 
       copyButton.onclick = function(){ 
      var inputs = oDoc1.getElementsByTagName('textarea'); 
      //var inputs = iframe1.CKEDITOR.instances.test6.getData(); 
      //console.log(typeof inputs); console.log(inputs.toString()); 
      outputBody.innerHTML = '<div>'; 
        for (var i = 0 ; i < inputs.length ; i++){ 
         outputBody.innerHTML += '<div>'+inputs[i].value+'</div>'; 
        } 
        outputBody.innerHTML += '</div>'; 
       }; 
      }; 
     </script> 
    </body> 
</html> 

我觉得这条线,上面写着textarea的应固定的(在的jsfiddle第27行):

var inputs = oDoc1.getElementsByTagName('textarea'); 

这是我已经试过了,但它不工作(第28行上的jsfiddle [评论]):

var inputs = iframe1.CKEDITOR.instances.test6.getData(); 

这是类型文本区域的(CKEditor的)它应读,这是在iframe中#1中的HTML代码:

<script type="text/javascript" src="http://nightly.ckeditor.com/13-10-29-07-05/standard/ckeditor.js"></script> 

<textarea class="ckeditor" id="test6" name="testa">asdfasdf</textarea> 

感谢。

回答

0

像这样:http://jsfiddle.net/RTBJQ/22/

至少在Chrome它的工作原理,如果我理解你想要做什么。相关部分:

var input = iframe1.contentWindow.CKEDITOR.instances.test6.getData(); 
outputBody.innerHTML = '<div id="MagicalPonies">' + input + '</div>'; 

要遍历的情况下,你可以做这样的:http://jsfiddle.net/RTBJQ/24/ - 相关部分:

var html = ""; 
for (var insta in iframe1.contentWindow.CKEDITOR.instances) { 
    var input = iframe1.contentWindow.CKEDITOR.instances[insta].getData(); 
    html += '<h1>'+insta+'</h1><div>' + input + '</div>'; 
} 
outputBody.innerHTML = html; 
+0

如何使这项工作的多个实例?可以是相同的id'test6',也可以像'test1',test2','test3'等迭代。我希望将所有实例组合在一起,然后发送到iframe2。谢谢。 –

+0

@JoeFlemmings我编辑的答案包括实例循环,希望它有帮助!这不是一个完全适合你的组合的解决方案,但是将它扩展为一个组合解决方案应该非常简单。 – Nenotlep

+0

我需要一个工作示例。你能帮助我吗?也许在jsfiddle中显示我? –

相关问题