从CKeditor获取非HTML文本

ozz*_*mra 13 javascript text ckeditor

在我的应用程序中,在插入新闻部分,我使用新闻内容的子字符串作为新闻摘要.为了从用户获取新闻内容文本,我使用CKEditor和新闻摘要我使用substring方法获取一定长度的新闻内容.但是当我使用CKEditor时,我得到带有html标签的文本而不是纯文本,当我使用时子串方法,我的新闻摘要变得混乱!如何从此控件获取原始文本? 我读了这个,但我不能使用getText()方法

Rei*_*mar 17

尝试这样的代码:

CKEDITOR.instances.editor1.document.getBody().getText();
Run Code Online (Sandbox Code Playgroud)

这对我来说可以.您可以在http://ckeditor.com/demo上进行测试.它并不理想(表格单元格中的文本在没有空格的情况下连接在一起),但可能足以满足您的需求.


编辑(2017年12月20日): CKEditor 4演示被移动到https://ckeditor.com/ckeditor-4/并使用不同的编辑器名称,因此要执行的新代码是:

CKEDITOR.instances.ckdemo.document.getBody().getText();
Run Code Online (Sandbox Code Playgroud)

同样重要的是,它将在"文章编辑器"和"内联编辑器"中工作,您需要获取不同元素的文本:

CKEDITOR.instances.editor1.editable().getText();
Run Code Online (Sandbox Code Playgroud)


dav*_*rad 12

像这样做

//getSnapshot() retrieves the "raw" HTML, without tabs, linebreaks etc
var html=CKEDITOR.instances.YOUR_TEXTAREA_ID.getSnapshot();
var dom=document.createElement("DIV");
dom.innerHTML=html;
var plain_text=(dom.textContent || dom.innerText);

alert(plain_text);
Run Code Online (Sandbox Code Playgroud)

中提琴,抓住你想要的plain_text部分.

更新/示例

添加此JavaScript

<script type="text/javascript">
function createTextSnippet() {
    //example as before, replace YOUR_TEXTAREA_ID
    var html=CKEDITOR.instances.YOUR_TEXTAREA_ID.getSnapshot();
    var dom=document.createElement("DIV");
    dom.innerHTML=html;
    var plain_text=(dom.textContent || dom.innerText);

    //create and set a 128 char snippet to the hidden form field
    var snippet=plain_text.substr(0,127);
    document.getElementById("hidden_snippet").value=snippet;

    //return true, ok to submit the form
    return true;
}
</script>
Run Code Online (Sandbox Code Playgroud)

在HTML中,将createTextSnippet作为onsubmit-handler添加到表单中,例如

<form action="xxx" method="xxx" onsubmit="createTextSnippet();" />
Run Code Online (Sandbox Code Playgroud)

在形式内,插入<form></form>插入之间

<input type="hidden" name="hidden_snippet" id="hidden_snippet" value="" />
Run Code Online (Sandbox Code Playgroud)

提交表单后,您可以在服务器端访问hidden_​​snippet以及表单中的其余字段.


小智 6

我个人使用这种方法来压缩代码并删除双空格和换行符:

        var TextGrab = CKEDITOR.instances['editor1'].getData();
        TextGrab = $(TextGrab).text(); // html to text        
        TextGrab = TextGrab.replace(/\r?\n|\r/gm," "); // remove line breaks   
        TextGrab = TextGrab.replace(/\s\s+/g, " ").trim(); // remove double spaces
Run Code Online (Sandbox Code Playgroud)