0

所以除了 NicEdit,我还没有找到任何其他的 inline-div 编辑 jquery/javascript 软件。我想在我的光标所在的 div 中注入一个选项卡或任何 html。我在这里偶然发现了一些代码:

function insertAtCursor(editor, value){
    var editor = nicEditors.findEditor(editor);
    var range = editor.getRng();                    
    var editorField = editor.selElm();
    editorField.nodeValue = editorField.nodeValue.substring(0, range.startOffset) +
                            value +
                            editorField.nodeValue.substring(range.endOffset, editorField.nodeValue.length);

}

但是,如果光标正好在左侧(没有输入文本,就在行首)(nodeValue 变为空),则它不起作用。此外,当输入文本时,光标会在几个浏览器中跳来跳去(比较 Chrome 和 Firefox)。

是否有支持内联选项卡(选项卡按钮)或使用 Divs (或模仿 divs 的 textareas 的文本区域)注入的所见即所得的方法?为什么这很难找到?

4

5 回答 5

0

以下代码修复了有关注入 div 或其他 html 元素以及编辑器中还没有任何文本的问题:

if(editorField.nodeValue==null){
  editor.setContent('<strong>Your content</strong>');
}else{        
  editorField.nodeValue = editorField.nodeValue.substring(0, range.startOffset) +
                          '<strong>Your content</strong>' +
                          editorField.nodeValue.substring(range.endOffset, editorField.nodeValue.length);
  editor.setContent(editorField.nodeValue);
}
于 2012-09-13T07:08:56.760 回答
0

首先检查空节点,然后设置该特定节点(editorField 值)

    var editor = nicEditors.findEditor("cpMain_area2");
    var range = editor.getRng();            
    var editorField = editor.selElm();
   if (editorField.nodeValue == null) {
        editorField.setContent('<DIV><'+  A +'></DIV>')
         }
    else {

        editorField.nodeValue = editorField.nodeValue.substring(0, range.startOffset) + A + editorField.nodeValue.substring(range.endOffset, editorField.nodeValue.length);
       }
于 2014-10-27T12:46:38.033 回答
0

我发现的最好的内联编辑器是 Google 的 WYSIWYG,它是他们的开源 javascript 库的一部分,称为 Closure Library:http ://code.google.com/intl/sv-SE/closure/library/

不幸的是,它不是很容易设置,也没有那么完善的文档,但如果你设法启动并运行它,它具有与 Gmail 编辑器或 Google 协作平台编辑器大致相同的功能,具有很好的浏览器兼容性和很好的内联特征。

于 2011-07-16T02:43:02.840 回答
0

在这里查看我的答案。这是我创建的一个插件,用于在光标位置插入 html,对我来说效果很好。

于 2012-10-13T02:13:58.433 回答
-1

首先检查空节点,然后设置该特定节点

if (editorField.nodeValue == null) {
    editorField.setContent(DataFieldValue);
}
于 2015-10-06T10:49:32.800 回答