delete.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. ///import core
  2. ///commands 删除
  3. ///commandsName Delete
  4. ///commandsTitle 删除
  5. /**
  6. * 删除
  7. * @function
  8. * @name baidu.editor.execCommand
  9. * @param {String} cmdName delete删除
  10. */
  11. UE.commands['delete'] = {
  12. execCommand : function (){
  13. var range = this.selection.getRange(),
  14. mStart = 0,
  15. mEnd = 0,
  16. me = this;
  17. if(this.selectAll ){
  18. //trace:1633
  19. me.body.innerHTML = '<p>'+(browser.ie ? '&nbsp;' : '<br/>')+'</p>';
  20. range.setStart(me.body.firstChild,0).setCursor(false,true);
  21. me.selectAll = false;
  22. return;
  23. }
  24. if(me.currentSelectedArr && me.currentSelectedArr.length > 0){
  25. for(var i=0,ci;ci=me.currentSelectedArr[i++];){
  26. if(ci.style.display != 'none'){
  27. ci.innerHTML = browser.ie ? domUtils.fillChar : '<br/>'
  28. }
  29. }
  30. range.setStart(me.currentSelectedArr[0],0).setCursor();
  31. return;
  32. }
  33. if(range.collapsed)
  34. return;
  35. range.txtToElmBoundary();
  36. //&& !domUtils.isBlockElm(range.startContainer)
  37. while(!range.startOffset && !domUtils.isBody(range.startContainer) && !dtd.$tableContent[range.startContainer.tagName] ){
  38. mStart = 1;
  39. range.setStartBefore(range.startContainer);
  40. }
  41. //&& !domUtils.isBlockElm(range.endContainer)
  42. while(!domUtils.isBody(range.endContainer)&& !dtd.$tableContent[range.endContainer.tagName] ){
  43. var child,endContainer = range.endContainer,endOffset = range.endOffset;
  44. // if(endContainer.nodeType == 3 && endOffset == endContainer.nodeValue.length){
  45. // range.setEndAfter(endContainer);
  46. // continue;
  47. // }
  48. child = endContainer.childNodes[endOffset];
  49. if(!child || domUtils.isBr(child) && endContainer.lastChild === child){
  50. range.setEndAfter(endContainer);
  51. continue;
  52. }
  53. break;
  54. }
  55. if(mStart){
  56. var start = me.document.createElement('span');
  57. start.innerHTML = 'start';
  58. start.id = '_baidu_cut_start';
  59. range.insertNode(start).setStartBefore(start)
  60. }
  61. if(mEnd){
  62. var end = me.document.createElement('span');
  63. end.innerHTML = 'end';
  64. end.id = '_baidu_cut_end';
  65. range.cloneRange().collapse(false).insertNode(end);
  66. range.setEndAfter(end)
  67. }
  68. range.deleteContents();
  69. if(domUtils.isBody(range.startContainer) && domUtils.isEmptyBlock(me.body)){
  70. me.body.innerHTML = '<p>'+(browser.ie?'':'<br/>')+'</p>';
  71. range.setStart(me.body.firstChild,0).collapse(true);
  72. }else if ( !browser.ie && domUtils.isEmptyBlock(range.startContainer)){
  73. range.startContainer.innerHTML = '<br/>'
  74. }
  75. range.select(true)
  76. },
  77. queryCommandState : function(){
  78. if(this.currentSelectedArr && this.currentSelectedArr.length > 0){
  79. return 0;
  80. }
  81. return this.highlight || this.selection.getRange().collapsed ? -1 : 0;
  82. }
  83. };