horizontal.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /**
  2. * 插入分割线插件
  3. * @file
  4. * @since 1.2.6.1
  5. */
  6. /**
  7. * 插入分割线
  8. * @command horizontal
  9. * @method execCommand
  10. * @param { String } cmdName 命令字符串
  11. * @example
  12. * ```javascript
  13. * editor.execCommand( 'horizontal' );
  14. * ```
  15. */
  16. UE.plugins["horizontal"] = function() {
  17. var me = this;
  18. me.commands["horizontal"] = {
  19. execCommand: function(cmdName) {
  20. var me = this;
  21. if (me.queryCommandState(cmdName) !== -1) {
  22. me.execCommand("insertHtml", "<hr>");
  23. var range = me.selection.getRange(),
  24. start = range.startContainer;
  25. if (start.nodeType == 1 && !start.childNodes[range.startOffset]) {
  26. var tmp;
  27. if ((tmp = start.childNodes[range.startOffset - 1])) {
  28. if (tmp.nodeType == 1 && tmp.tagName == "HR") {
  29. if (me.options.enterTag == "p") {
  30. tmp = me.document.createElement("p");
  31. range.insertNode(tmp);
  32. range.setStart(tmp, 0).setCursor();
  33. } else {
  34. tmp = me.document.createElement("br");
  35. range.insertNode(tmp);
  36. range.setStartBefore(tmp).setCursor();
  37. }
  38. }
  39. }
  40. }
  41. return true;
  42. }
  43. },
  44. //边界在table里不能加分隔线
  45. queryCommandState: function() {
  46. return domUtils.filterNodeList(
  47. this.selection.getStartElementPath(),
  48. "table"
  49. )
  50. ? -1
  51. : 0;
  52. }
  53. };
  54. // me.addListener('delkeyup',function(){
  55. // var rng = this.selection.getRange();
  56. // if(browser.ie && browser.version > 8){
  57. // rng.txtToElmBoundary(true);
  58. // if(domUtils.isStartInblock(rng)){
  59. // var tmpNode = rng.startContainer;
  60. // var pre = tmpNode.previousSibling;
  61. // if(pre && domUtils.isTagNode(pre,'hr')){
  62. // domUtils.remove(pre);
  63. // rng.select();
  64. // return;
  65. // }
  66. // }
  67. // }
  68. // if(domUtils.isBody(rng.startContainer)){
  69. // var hr = rng.startContainer.childNodes[rng.startOffset -1];
  70. // if(hr && hr.nodeName == 'HR'){
  71. // var next = hr.nextSibling;
  72. // if(next){
  73. // rng.setStart(next,0)
  74. // }else if(hr.previousSibling){
  75. // rng.setStartAtLast(hr.previousSibling)
  76. // }else{
  77. // var p = this.document.createElement('p');
  78. // hr.parentNode.insertBefore(p,hr);
  79. // domUtils.fillNode(this.document,p);
  80. // rng.setStart(p,0);
  81. // }
  82. // domUtils.remove(hr);
  83. // rng.setCursor(false,true);
  84. // }
  85. // }
  86. // })
  87. me.addListener("delkeydown", function(name, evt) {
  88. var rng = this.selection.getRange();
  89. rng.txtToElmBoundary(true);
  90. if (domUtils.isStartInblock(rng)) {
  91. var tmpNode = rng.startContainer;
  92. var pre = tmpNode.previousSibling;
  93. if (pre && domUtils.isTagNode(pre, "hr")) {
  94. domUtils.remove(pre);
  95. rng.select();
  96. domUtils.preventDefault(evt);
  97. return true;
  98. }
  99. }
  100. });
  101. };