javascript – 双击时div中的文本选择(contenteditable)

前端之家收集整理的这篇文章主要介绍了javascript – 双击时div中的文本选择(contenteditable)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些文本div和contenteditable =“true”.当我单击这个div – 工作一些我的脚本时,它不是很重要.当我双击这个div时 – 需要编辑div中的文本.编辑文本只需要在双击之后,而不是单次之后.而且非常重要,当我双击div时 – 插入符号需要留在鼠标光标下.不需要选择文字.我发现了一些单/双脚本.但有问题.当我双击div – 文本是选择.选择没有必要.需要我点击的编辑器插入符号.我不明白怎么做.
http://jsfiddle.net/X6auM/

解决方法

每个当前的主要浏览器都提供了一个API来创建鼠标事件的范围,尽管需要四个不同的代码分支.

这是一些背景:

> https://stackoverflow.com/a/10659990/96100
> https://stackoverflow.com/a/12705894/96100
> Creating a collapsed range from a pixel position in FF/Webkit

这是一个演示:http://jsfiddle.net/timdown/krtTD/10/

这里是一些代码

  1. function getMouseEventCaretRange(evt) {
  2. var range,x = evt.clientX,y = evt.clientY;
  3.  
  4. // Try the simple IE way first
  5. if (document.body.createTextRange) {
  6. range = document.body.createTextRange();
  7. range.moveToPoint(x,y);
  8. }
  9.  
  10. else if (typeof document.createRange != "undefined") {
  11. // Try Mozilla's rangeOffset and rangeParent properties,// which are exactly what we want
  12. if (typeof evt.rangeParent != "undefined") {
  13. range = document.createRange();
  14. range.setStart(evt.rangeParent,evt.rangeOffset);
  15. range.collapse(true);
  16. }
  17.  
  18. // Try the standards-based way next
  19. else if (document.caretPositionFromPoint) {
  20. var pos = document.caretPositionFromPoint(x,y);
  21. range = document.createRange();
  22. range.setStart(pos.offsetNode,pos.offset);
  23. range.collapse(true);
  24. }
  25.  
  26. // Next,the WebKit way
  27. else if (document.caretRangeFromPoint) {
  28. range = document.caretRangeFromPoint(x,y);
  29. }
  30. }
  31.  
  32. return range;
  33. }
  34.  
  35. function selectRange(range) {
  36. if (range) {
  37. if (typeof range.select != "undefined") {
  38. range.select();
  39. } else if (typeof window.getSelection != "undefined") {
  40. var sel = window.getSelection();
  41. sel.removeAllRanges();
  42. sel.addRange(range);
  43. }
  44. }
  45. }
  46.  
  47. document.getElementById("editor").ondblclick = function(evt) {
  48. evt = evt || window.event;
  49. this.contentEditable = true;
  50. this.focus();
  51. var caretRange = getMouseEventCaretRange(evt);
  52.  
  53. // Set a timer to allow the selection to happen and the dust settle first
  54. window.setTimeout(function() {
  55. selectRange(caretRange);
  56. },10);
  57. return false;
  58. };

猜你在找的JavaScript相关文章