2013-03-17 120 views
1

是否有方法在tinyMCE中的指定偏移量处插入内容?我需要在运行时在文档中的某个位置插入一个元素。在指定位置插入元素

编辑:更具体,我需要从一个客户端获取光标的位置,将其发送到服务器,并让一个自定义光标是画在他们的屏幕广播给其他客户,他们知道其他客户端在写。卡住的部分是我如何插入包含插入符号的节点在一个偏移量。我想出了如何获得脱字号以及如何发送它。唯一的问题是,似乎没有方法在像insertNode(element,position)或类似的位置插入节点。

这是代码,我现在所拥有的:

hub.client.broadcastPosition = function (position) { 
    range = ed.selection.getRng(); 

    var newNode = ed.getDoc().createElement("span"); 
    newNode.id = "caret"; 
    newNode.setAttribute("class", "all-carets"); 

    var element = ed.getDoc().getElementById("caret"); 

    if (element != null) { 
     element.parentNode.removeChild(element); 
    } 

    newNode.innerHTML = "|"; 
    newNode.style.color = "black"; 

    range.setStart(range.startContainer, position); 
    range.setEnd(range.startContainer, position); 

    range.insertNode(newNode, position); 
}; 

,我通过这个发送了服务器的位置:

var s = ed.selection.getSel(); 
    if (s) { 
     if (s.anchorNode && s.anchorNode.nodeType == 3) { 
      caretPosInElement = s.anchorOffset; 

      hub.server.sendPos(caretPosInElement); 
     } 
} 

在客户端即在broadcastPosition功能,我需要将我的跨度节点与id caret插入到我从服务器发送的位置。所以我需要别的东西,而不是那个范围。有任何想法吗?

+0

我从来没有使用TinyMCE的,但究竟什么是你想插入?并去哪里?你可以更具体一点 – btevfik 2013-03-17 14:21:46

+0

我试图插入一个自定义插入符号,因为我使用编辑器进行实时协作,所以对应于tinyMCE插入符号本身的位置。我已经知道插入节点的位置。我只需要一个方法在该位置插入节点 – Bernice 2013-03-17 14:24:19

+0

这是你正在寻找什么http://stackoverflow.com/questions/1253303/whats-the-best-way-to-set-cursor-caret-position – btevfik 2013-03-17 14:26:52

回答

0

有关选择要插入的东西,然后用mceInsertContent的execCommand实际到位什么:

ed.execCommand('mceInsertContent', false, '<span class="marker">my_node_content</span>'); 
+0

是的我也想过,但我不能选择插入的地方,因为我必须有多个用户在文档的不同位置同时写入。现在我通过从服务器发送实际范围和文本来想清楚它。但是我仍然在单击和方向键时遇到问题,因为我无法弄清楚这个部分:/似乎没有插入tinymce某个位置的方法。我从字面上到处搜索! – Bernice 2013-03-19 19:43:57

+0

要清楚:var el = tinyMCE.activeEditor.dom.create('div',{id:'test','class':'myclass'},'some content'); tiny35.JPG不工作,因为你有几个人在同一个编辑器上工作,因此你不能使用tinymce选择 - 对吗? – Thariama 2013-03-20 10:00:05

+0

yepp你是对的我不能使用选择。对于如何在不使用选择的情况下在特定位置插入节点的反应非常少。我认为我必须找到另一个解决方法。 – Bernice 2013-03-20 16:20:21