| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | /** * 锚点插件,为UEditor提供插入锚点支持 * @file * @since 1.2.6.1 */UE.plugin.register('anchor', function (){    return {        bindEvents:{            'ready':function(){                utils.cssRule('anchor',                    '.anchorclass{background: url(\''                        + this.options.themePath                        + this.options.theme +'/images/anchor.gif\') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}',                    this.document);            }        },       outputRule: function(root){           utils.each(root.getNodesByTagName('img'),function(a){               var val;               if(val = a.getAttr('anchorname')){                   a.tagName = 'a';                   a.setAttr({                       anchorname : '',                       name : val,                       'class' : ''                   })               }           })       },       inputRule:function(root){           utils.each(root.getNodesByTagName('a'),function(a){               var val;               if((val = a.getAttr('name')) && !a.getAttr('href')){                   //过滤掉word冗余标签                   //_Toc\d+有可能勿命中                   if(/^\_Toc\d+$/.test(val)){                       a.parentNode.removeChild(a);                       return;                   }                   a.tagName = 'img';                   a.setAttr({                       anchorname :a.getAttr('name'),                       'class' : 'anchorclass'                   });                   a.setAttr('name')               }           })       },       commands:{           /**            * 插入锚点            * @command anchor            * @method execCommand            * @param { String } cmd 命令字符串            * @param { String } name 锚点名称字符串            * @example            * ```javascript            * //editor 是编辑器实例            * editor.execCommand('anchor', 'anchor1');            * ```            */           'anchor':{               execCommand:function (cmd, name) {                   var range = this.selection.getRange(),img = range.getClosedNode();                   if (img && img.getAttribute('anchorname')) {                       if (name) {                           img.setAttribute('anchorname', name);                       } else {                           range.setStartBefore(img).setCursor();                           domUtils.remove(img);                       }                   } else {                       if (name) {                           //只在选区的开始插入                           var anchor = this.document.createElement('img');                           range.collapse(true);                           domUtils.setAttributes(anchor,{                               'anchorname':name,                               'class':'anchorclass'                           });                           range.insertNode(anchor).setStartAfter(anchor).setCursor(false,true);                       }                   }               }           }       }    }});
 |