123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /**
- * 格式刷,只格式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
- };
- };
|