123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /**
- * 段落格式
- * @file
- * @since 1.2.6.1
- */
- /**
- * 段落对齐方式
- * @command justify
- * @method execCommand
- * @param { String } cmd 命令字符串
- * @param { String } align 对齐方式:left => 居左,right => 居右,center => 居中,justify => 两端对齐
- * @example
- * ```javascript
- * editor.execCommand( 'justify', 'center' );
- * ```
- */
- /**
- * 如果选区所在位置是段落区域,返回当前段落对齐方式
- * @command justify
- * @method queryCommandValue
- * @param { String } cmd 命令字符串
- * @return { String } 返回段落对齐方式
- * @example
- * ```javascript
- * editor.queryCommandValue( 'justify' );
- * ```
- */
- UE.plugins['justify']=function(){
- var me=this,
- block = domUtils.isBlockElm,
- defaultValue = {
- left:1,
- right:1,
- center:1,
- justify:1
- },
- doJustify = function (range, style) {
- var bookmark = range.createBookmark(),
- filterFn = function (node) {
- return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' && !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace(node);
- };
- range.enlarge(true);
- var bookmark2 = range.createBookmark(),
- current = domUtils.getNextDomNode(bookmark2.start, false, filterFn),
- tmpRange = range.cloneRange(),
- tmpNode;
- while (current && !(domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)) {
- if (current.nodeType == 3 || !block(current)) {
- tmpRange.setStartBefore(current);
- while (current && current !== bookmark2.end && !block(current)) {
- tmpNode = current;
- current = domUtils.getNextDomNode(current, false, null, function (node) {
- return !block(node);
- });
- }
- tmpRange.setEndAfter(tmpNode);
- var common = tmpRange.getCommonAncestor();
- if (!domUtils.isBody(common) && block(common)) {
- domUtils.setStyles(common, utils.isString(style) ? {'text-align':style} : style);
- current = common;
- } else {
- var p = range.document.createElement('p');
- domUtils.setStyles(p, utils.isString(style) ? {'text-align':style} : style);
- var frag = tmpRange.extractContents();
- p.appendChild(frag);
- tmpRange.insertNode(p);
- current = p;
- }
- current = domUtils.getNextDomNode(current, false, filterFn);
- } else {
- current = domUtils.getNextDomNode(current, true, filterFn);
- }
- }
- return range.moveToBookmark(bookmark2).moveToBookmark(bookmark);
- };
- UE.commands['justify'] = {
- execCommand:function (cmdName, align) {
- var range = this.selection.getRange(),
- txt;
- //闭合时单独处理
- if (range.collapsed) {
- txt = this.document.createTextNode('p');
- range.insertNode(txt);
- }
- doJustify(range, align);
- if (txt) {
- range.setStartBefore(txt).collapse(true);
- domUtils.remove(txt);
- }
- range.select();
- return true;
- },
- queryCommandValue:function () {
- var startNode = this.selection.getStart(),
- value = domUtils.getComputedStyle(startNode, 'text-align');
- return defaultValue[value] ? value : 'left';
- },
- queryCommandState:function () {
- var start = this.selection.getStart(),
- cell = start && domUtils.findParentByTagName(start, ["td", "th","caption"], true);
- return cell? -1:0;
- }
- };
- };
|