convertcase.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. ///import core
  2. ///commands 大小写转换
  3. ///commandsName touppercase,tolowercase
  4. ///commandsTitle 大写,小写
  5. /**
  6. * 大小写转换
  7. * @function
  8. * @name baidu.editor.execCommands
  9. * @param {String} cmdName cmdName="convertcase"
  10. */
  11. UE.commands['touppercase'] =
  12. UE.commands['tolowercase'] = {
  13. execCommand:function (cmd) {
  14. var me = this;
  15. var rng = me.selection.getRange();
  16. if(rng.collapsed){
  17. return rng;
  18. }
  19. var bk = rng.createBookmark(),
  20. bkEnd = bk.end,
  21. filterFn = function( node ) {
  22. return !domUtils.isBr(node) && !domUtils.isWhitespace( node );
  23. },
  24. curNode = domUtils.getNextDomNode( bk.start, false, filterFn );
  25. while ( curNode && (domUtils.getPosition( curNode, bkEnd ) & domUtils.POSITION_PRECEDING) ) {
  26. if ( curNode.nodeType == 3 ) {
  27. curNode.nodeValue = curNode.nodeValue[cmd == 'touppercase' ? 'toUpperCase' : 'toLowerCase']();
  28. }
  29. curNode = domUtils.getNextDomNode( curNode, true, filterFn );
  30. if(curNode === bkEnd){
  31. break;
  32. }
  33. }
  34. rng.moveToBookmark(bk).select();
  35. }
  36. };