2010-12-17 39 views
3

subタグとsupタグのネストを許可するtinyMCEプラグインを作成したいと思います。TinyMCEカーソル移動

今は、ボタンを押す/ショートカットキーを押すと生のHTML ''をカーソルに挿入するコマンドを記述しました。しかし、これは、カーソルを新しいタグの中央に移動できる場合にのみ機能します。

カーソルを移動する方法に関するドキュメントが見つかりません。いくつかの提案されたハックがありますが、彼らは非常にハッキーです。これは難しいことではありません。私が理解するように、これは[b][i]ボタンがどのように機能するかということです。

これを行うには良い方法がありますか?どのように私は "サブモード"または "SUPモード"にユーザーを入れ、 "サブ"と "SUP"モードをネストすることができますtinyMCE関数を書​​くことができますか?

ありがとうございます!

答えて

3

この関数は、カーソルを指定されたhtml要素に設定します。

// sets the cursor to the specified element, ed ist the editor instance 
// start defines if the cursor is to be set at the start or at the end 
setCursor: function (ed, element, start) { 

    var doc = ed.getDoc(); 
    if (typeof doc.createRange != "undefined") { 
     var range = doc.createRange(); 
     range.selectNodeContents(element); 
     range.collapse(start); 
     var win = doc.defaultView || doc.parentWindow; 
     var sel = win.getSelection(); 
     sel.removeAllRanges(); 
     sel.addRange(range); 
    } else if (typeof doc.body.createTextRange != "undefined") { 
     var textRange = doc.body.createTextRange(); 
     textRange.moveToElementText(element); 
     textRange.collapse(start); 
     textRange.select(); 
    } 
}, 

supsをネストするには、supsとsubsがネストできることを確認する必要があります。 extended_valid_elementsおよびvalid_elements設定パラメータを確認してください。 subとsupはデフォルトでネストすることはできません!ルールセットのこの部分を上書きする必要があります。

+0

助けてください。このコードはOpera(11.10、2092、Win32XP)では動作しません。キャッチされない例外:[object DOMException] ... range.selectNodeContents(el); –

+0

私はOperaがTinymceによって完全にサポートされていないことを恐れています。最新のtinymceベータソースコードを見てみたいかもしれません - カーソルを設定する機能が組み込まれています - 多分あなたのオペラユースケースでうまくいくかもしれません – Thariama

+0

何が起こったのか分かりませんが、コード、すべてがうまくいく:) –

関連する問題