カーソル位置の取得と設定をサポートするJavaScriptリッチテキストエディタはありますか?Javascriptリッチテキストエディタでカーソル位置の取得と設定が可能
答えて
私は陰惨な詳細を説明しませんが、これは動作します:
function getTextNodesIn(node) {
var textNodes = [];
if (node.nodeType == 3) {
textNodes.push(node);
} else {
var children = node.childNodes;
for (var i = 0, len = children.length; i < len; ++i) {
textNodes.push.apply(textNodes, getTextNodesIn(children[i]));
}
}
return textNodes;
}
function setSelectionRange(el, start, end) {
if (document.createRange && window.getSelection) {
var range = document.createRange();
range.selectNodeContents(el);
var textNodes = getTextNodesIn(el);
var foundStart = false;
var charCount = 0, endCharCount;
for (var i = 0, textNode; textNode = textNodes[i++];) {
endCharCount = charCount + textNode.length;
if (!foundStart && start >= charCount && (start < endCharCount || (start == endCharCount && i < textNodes.length))) {
range.setStart(textNode, start - charCount);
foundStart = true;
}
if (foundStart && end <= endCharCount) {
range.setEnd(textNode, end - charCount);
break;
}
charCount = endCharCount;
}
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (document.selection && document.body.createTextRange) {
var textRange = document.body.createTextRange();
textRange.moveToElementText(el);
textRange.collapse(true);
textRange.moveEnd('character', end);
textRange.moveStart('character', start);
textRange.select();
}
}
今、あなたは自分の要素を取得し、ものを選択します。
setSelectionRange(document.getElementById('dijitEditorBody'), 10, 50);
私は明日仕事に入るとすぐにテストに行く、多くの事前に感謝します。これがうまくいけば、私はasnwerを受け入れ、あなたの電子メールを介してあなたに昼食時間の前に急いで$ 50を撃つ。 –
Paypalのアカウントを持っていますか? –
確かに、これは実際に私の仕事なので特にです:http://stackoverflow.com/a/6242538/96100 –
はい、redactor.jsはそれをやっている:
を$('#redactor').redactor('setCaret', element, 4);
私はdijit.Ediの解決策を探していましたトールとこの古い質問の向こう側に来た。これは私がこれをした方法です(dijit/_editor/EnterKeyHandlingプラグインです)。
このように私は、私自身のプラグインを作成:
define([
"dojo/_base/declare",
"dijit/_editor/_Plugin",
"dijit/_editor/range",
"dijit/_editor/selection"
], function(declare, _Plugin, rangeapi, selectionapi) {
var MyPlugin = declare(_Plugin, {
setToolbar: function(editorToolbar){
// [...]
this.own(this.editor.on('keypressed', lang.hitch(this, 'onKeyPressed')));
},
onKeyPressed: function(){
// summary:
// Handler for after the user has pressed a key, and the display has been updated.
var block = undefined,
blockNode = undefined,
selection = rangeapi.getSelection(this.editor.window),
range = selection.getRangeAt(0);
if(!range.collapsed){
range.deleteContents();
selection = rangeapi.getSelection(this.editor.window);
range = selection.getRangeAt(0);
}
block = rangeapi.getBlockAncestor(range.endContainer, null, this.editor.editNode);
if (block.blockNode) {
blockNode = block.blockNode;
// this is the node under the cursor...
console.debug(blockNode);
}
});
_Plugin.registry["myplugin"] = _Plugin.registry["myplugin"] = function(args){
return new MyPlugin();
};
return MyPlugin;
});
それからちょうどあなたのdijit /エディタの "extraPlugins" プロパティに "myplugin" を追加します。
- 1. SwiftのUITextFieldとUITextViewのカーソル位置の取得と設定
- 2. 設定のカーソル位置 - クロスブラウザ
- 3. BASICのカーソル位置を取得/設定する
- 4. すべての編集可能なJComboBox内のテキストと設定のカーソル位置
- 5. コンテンツ編集可能なdivでカーソルの位置を取得して設定する
- 6. Magentoの、位置設定可能なオプション
- 7. jQueryマウス位置の設定(カーソル位置ではない)
- 8. カーソルの位置を設定する方法。 (p5.js JavaScript)
- 9. UITextFieldのカーソル位置を取得する
- 10. Eclipseテキストエディタのカーソル位置を取得
- 11. スクロールズーム画像のカーソル位置を取得
- 12. JavaScriptのsetSelectionRange()メソッドとカーソル位置
- 13. カーソル位置を取得Androidキーボード
- 14. LWJGL 3カーソル位置を取得
- 15. 兄弟コンポーネントにカーソル位置を取得
- 16. contenteditable divカーソル位置を取得
- 17. javascriptを使用して入力フィールドにカーソル位置を取得
- 18. CKEditor 4:カーソル/キャレットの位置を取得および設定する方法は?
- 19. Linux端末でのカーソル位置と端末サイズの取得
- 20. Plotlyツールチップの位置がカーソル位置
- 21. 編集可能なJComboBoxでキャレットの位置を設定する
- 22. jQueryのドラッグ可能なカーソル位置の検索
- 23. UWPの取得/設定Xaml WebViewのズームとスクロールの位置は?
- 24. Visual Studioでのカーソル位置のクリップボードへの取得
- 25. コンソールのカーソル位置をスレッドセーフな方法で設定する
- 26. C#でカーソルの位置を設定する方法XNA
- 27. UITextViewでカーソル位置を設定できません
- 28. Googleマップでドラッグ可能マーカー位置(lat、lng)を取得する
- 29. ランドスケープでソフトキーボードのカーソル位置を取得する方法
- 30. Matlabで画像のカーソル位置を取得する方法
おそらく。あなたが好きなものがなければ、その機能を実装するのは難しいことではありません。 – Blender
dijit.Editorで実装できる場合は50ドル、JSRTEの両方をサポートする場合は...真剣に... –
誰かが50ドルを支払ったことはありますか?私はこの質問をアップボートするのかdownvoteするのかに違いがあります。 – Zubair