horizontal.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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(this.selection.getStartElementPath(),'table') ? -1 : 0;
  47. }
  48. };
  49. // me.addListener('delkeyup',function(){
  50. // var rng = this.selection.getRange();
  51. // if(browser.ie && browser.version > 8){
  52. // rng.txtToElmBoundary(true);
  53. // if(domUtils.isStartInblock(rng)){
  54. // var tmpNode = rng.startContainer;
  55. // var pre = tmpNode.previousSibling;
  56. // if(pre && domUtils.isTagNode(pre,'hr')){
  57. // domUtils.remove(pre);
  58. // rng.select();
  59. // return;
  60. // }
  61. // }
  62. // }
  63. // if(domUtils.isBody(rng.startContainer)){
  64. // var hr = rng.startContainer.childNodes[rng.startOffset -1];
  65. // if(hr && hr.nodeName == 'HR'){
  66. // var next = hr.nextSibling;
  67. // if(next){
  68. // rng.setStart(next,0)
  69. // }else if(hr.previousSibling){
  70. // rng.setStartAtLast(hr.previousSibling)
  71. // }else{
  72. // var p = this.document.createElement('p');
  73. // hr.parentNode.insertBefore(p,hr);
  74. // domUtils.fillNode(this.document,p);
  75. // rng.setStart(p,0);
  76. // }
  77. // domUtils.remove(hr);
  78. // rng.setCursor(false,true);
  79. // }
  80. // }
  81. // })
  82. me.addListener('delkeydown',function(name,evt){
  83. var rng = this.selection.getRange();
  84. rng.txtToElmBoundary(true);
  85. if(domUtils.isStartInblock(rng)){
  86. var tmpNode = rng.startContainer;
  87. var pre = tmpNode.previousSibling;
  88. if(pre && domUtils.isTagNode(pre,'hr')){
  89. domUtils.remove(pre);
  90. rng.select();
  91. domUtils.preventDefault(evt);
  92. return true;
  93. }
  94. }
  95. })
  96. };