javascript – 可信的文本编辑器和光标位置

前端之家收集整理的这篇文章主要介绍了javascript – 可信的文本编辑器和光标位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我怎么能(使用 jquery或其他)在我的contenteditable div的光标/插入位置插入html:
  1. <div contenteditable="true">Hello world</div>

例如,如果光标/插入符号位于“hello”和“world”之间,则用户单击按钮,例如“插入图像”,然后使用javascript,类似于< img src = etc etc>等.将插入“你好”和“世界”之间.我希望我已经明确表示= S.

非常感谢示例代码,非常感谢!

解决方法

以下函数将在所有主流桌面浏览器的光标位置插入DOM节点(元素或文本节点):
  1. function insertNodeAtCursor(node) {
  2. var sel,range,html;
  3. if (window.getSelection) {
  4. sel = window.getSelection();
  5. if (sel.getRangeAt && sel.rangeCount) {
  6. sel.getRangeAt(0).insertNode(node);
  7. }
  8. } else if (document.selection && document.selection.createRange) {
  9. range = document.selection.createRange();
  10. html = (node.nodeType == 3) ? node.data : node.outerHTML;
  11. range.pasteHTML(html);
  12. }
  13. }

如果您想要插入HTML字符串:

  1. function insertHtmlAtCursor(html) {
  2. var sel,node;
  3. if (window.getSelection) {
  4. sel = window.getSelection();
  5. if (sel.getRangeAt && sel.rangeCount) {
  6. range = window.getSelection().getRangeAt(0);
  7. node = range.createContextualFragment(html);
  8. range.insertNode(node);
  9. }
  10. } else if (document.selection && document.selection.createRange) {
  11. document.selection.createRange().pasteHTML(html);
  12. }
  13. }

我从我对类似问题的回答中对此进行了调整:How to find cursor position in a contenteditable DIV?

猜你在找的JavaScript相关文章