File: /www/wwwroot/bs.kntsleep.com/system/extend/ueditor/_src/plugins/anchor.js
/**
* 锚点插件,为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);
}
}
}
}
}
};
});