123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- /**
- * 格式刷,只格式inline的
- * @file
- * @since 1.2.6.1
- */
- /**
- * 格式刷
- * @command formatmatch
- * @method execCommand
- * @remind 该操作不能复制段落格式
- * @param { String } cmd 命令字符串
- * @example
- * ```javascript
- * //editor是编辑器实例
- * //获取格式刷
- * editor.execCommand( 'formatmatch' );
- * ```
- */
- UE.plugins['formatmatch'] = function(){
- var me = this,
- list = [],img,
- flag = 0;
- me.addListener('reset',function(){
- list = [];
- flag = 0;
- });
- function addList(type,evt){
-
- if(browser.webkit){
- var target = evt.target.tagName == 'IMG' ? evt.target : null;
- }
- function addFormat(range){
- if(text){
- range.selectNode(text);
- }
- return range.applyInlineStyle(list[list.length-1].tagName,null,list);
- }
- me.undoManger && me.undoManger.save();
- var range = me.selection.getRange(),
- imgT = target || range.getClosedNode();
- if(img && imgT && imgT.tagName == 'IMG'){
- //trace:964
- imgT.style.cssText += ';float:' + (img.style.cssFloat || img.style.styleFloat ||'none') + ';display:' + (img.style.display||'inline');
- img = null;
- }else{
- if(!img){
- var collapsed = range.collapsed;
- if(collapsed){
- var text = me.document.createTextNode('match');
- range.insertNode(text).select();
- }
- me.__hasEnterExecCommand = true;
- //不能把block上的属性干掉
- //trace:1553
- var removeFormatAttributes = me.options.removeFormatAttributes;
- me.options.removeFormatAttributes = '';
- me.execCommand('removeformat');
- me.options.removeFormatAttributes = removeFormatAttributes;
- me.__hasEnterExecCommand = false;
- //trace:969
- range = me.selection.getRange();
- if(list.length){
- addFormat(range);
- }
- if(text){
- range.setStartBefore(text).collapse(true);
- }
- range.select();
- text && domUtils.remove(text);
- }
- }
- me.undoManger && me.undoManger.save();
- me.removeListener('mouseup',addList);
- flag = 0;
- }
- me.commands['formatmatch'] = {
- execCommand : function( cmdName ) {
-
- if(flag){
- flag = 0;
- list = [];
- me.removeListener('mouseup',addList);
- return;
- }
-
- var range = me.selection.getRange();
- img = range.getClosedNode();
- if(!img || img.tagName != 'IMG'){
- range.collapse(true).shrinkBoundary();
- var start = range.startContainer;
- list = domUtils.findParents(start,true,function(node){
- return !domUtils.isBlockElm(node) && node.nodeType == 1;
- });
- //a不能加入格式刷, 并且克隆节点
- for(var i=0,ci;ci=list[i];i++){
- if(ci.tagName == 'A'){
- list.splice(i,1);
- break;
- }
- }
- }
- me.addListener('mouseup',addList);
- flag = 1;
- },
- queryCommandState : function() {
- return flag;
- },
- notNeedUndo : 1
- };
- };
|