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 キャレットを持つスパン ノードを挿入する必要があります。したがって、その範囲の代わりに何か他のものが必要です。何か案は?

4

1 に答える 1

0

何かを挿入する実際の場所を選択してから、mceInsertContentexecCommandを使用するのはどうですか。

ed.execCommand('mceInsertContent', false, '<span class="marker">my_node_content</span>');
于 2013-03-19T15:43:28.223 に答える