1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /**
- * 锚点插件,为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);
- }
- }
- }
- }
- }
- };
- });
|