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);
- }
- }
- }
- }
- }
- }
- });
|