有什麼方法可以在contenteditable div中的選定文本之前和之後插入與bbcode相似的文本?我已經看到了許多textarea的答案,但代碼不適用於一個可以滿足需求的div。 IE支持是不需要的。在contenteditable中選擇文本前後插入文本
4
A
回答
12
的方法我建議是:
- 獲取一個範圍從選擇
- 在範圍
- 的末尾插入文本節點的範圍開始插入另一個文本節點
- 重新選擇原文
下面的演示將在所有主要瀏覽器中運行IE除外< = 8
代碼:
function surroundSelection(textBefore, textAfter) {
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount > 0) {
var range = sel.getRangeAt(0);
var startNode = range.startContainer, startOffset = range.startOffset;
var startTextNode = document.createTextNode(textBefore);
var endTextNode = document.createTextNode(textAfter);
var boundaryRange = range.cloneRange();
boundaryRange.collapse(false);
boundaryRange.insertNode(endTextNode);
boundaryRange.setStart(startNode, startOffset);
boundaryRange.collapse(true);
boundaryRange.insertNode(startTextNode);
// Reselect the original text
range.setStartAfter(startTextNode);
range.setEndBefore(endTextNode);
sel.removeAllRanges();
sel.addRange(range);
}
}
}
2
,有如果我從您的意見了解新的目標,你的選擇,並希望通過一個元素將其包圍。隨後的範圍surroundContents方法應該工作:
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var strong = document.createElement('strong');
range.surroundContents(strong);
相關問題
- 1. 在Javascript中插入文本contenteditable div
- 2. 插入文本之前,在所選文本後
- 3. 將html插入到contenteditable中,但在其後添加新文本
- 4. 在崇高文本中選擇前後添加文本
- 5. MySQL在值前後插入文本
- 6. 在javascript中選定的文本之前和之後插入文本
- 7. 雙擊時文本選擇div(contenteditable)
- 8. 窗口文本選擇在一個CONTENTEDITABLE一個CONTENTEDITABLE
- 9. 在Froala上選擇插入的文本
- 10. 在Word Interop App中插入xml文本後更改選擇
- 11. 在ContentEditable DIV中獲取所選文本?
- 12. 將文本插入WPF文本框中的舊文本之前
- 13. Contenteditable div設置插入符號替換文本後用HTML
- 14. 選擇文本並插入腳註
- 15. 在文件前面插入文本
- 16. 將文件讀入文本框之後選擇文本
- 17. 在contenteditable div中單擊按鈕時選擇文本(可見)
- 18. Contenteditable div在標題標記中選擇文本
- 19. 在文本框中的文本前插入空格
- 20. 在選擇框選項中插入隱藏文本
- 21. 在文本框中選擇文本
- 22. UITextView在textview文本中插入文本
- 23. 替換contenteditable div中的選定文本
- 24. 嘗試在選項值選擇時自動將文本插入文本框
- 25. 在SQL表WinForm中插入文本基於從DataGridView選擇 - 文本不DGV
- 26. Vim腳本縮進選擇的代碼,在選擇前後插入代碼
- 27. 選擇國家後的文本框插入
- 28. 在文本字段中插入文本後的焦點光標
- 29. 在文本輸入中禁用選擇
- 30. 在excel中取現存並插入文本前後
謝謝!如果需要的話,有沒有辦法使用html元素來顯示大膽而不是[b]標籤?像一個富文本編輯器? – Flaxbeard
@Flaxbeard:如果氣魄比控制精確加價更重要的是,我會用'document.execCommand(「大膽」,假,空)'。否則,你可以適應[這個答案](http://stackoverflow.com/a/6691294/96100)。 –
我寧願不使用execcommand,因爲它是無法控制的跨瀏覽器,只適用於某些標籤。我只使用createElement(「strong」);並將innerhtml設置爲選定的文本?此外,如何將我的樣式/班/ ID添加到這個元素? – Flaxbeard