123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /**
- * B、I、sub、super命令支持
- * @file
- * @since 1.2.6.1
- */
- UE.plugins['basestyle'] = function(){
- /**
- * 字体加粗
- * @command bold
- * @param { String } cmd 命令字符串
- * @remind 对已加粗的文本内容执行该命令, 将取消加粗
- * @method execCommand
- * @example
- * ```javascript
- * //editor是编辑器实例
- * //对当前选中的文本内容执行加粗操作
- * //第一次执行, 文本内容加粗
- * editor.execCommand( 'bold' );
- *
- * //第二次执行, 文本内容取消加粗
- * editor.execCommand( 'bold' );
- * ```
- */
- /**
- * 字体倾斜
- * @command italic
- * @method execCommand
- * @param { String } cmd 命令字符串
- * @remind 对已倾斜的文本内容执行该命令, 将取消倾斜
- * @example
- * ```javascript
- * //editor是编辑器实例
- * //对当前选中的文本内容执行斜体操作
- * //第一次操作, 文本内容将变成斜体
- * editor.execCommand( 'italic' );
- *
- * //再次对同一文本内容执行, 则文本内容将恢复正常
- * editor.execCommand( 'italic' );
- * ```
- */
- /**
- * 下标文本,与“superscript”命令互斥
- * @command subscript
- * @method execCommand
- * @remind 把选中的文本内容切换成下标文本, 如果当前选中的文本已经是下标, 则该操作会把文本内容还原成正常文本
- * @param { String } cmd 命令字符串
- * @example
- * ```javascript
- * //editor是编辑器实例
- * //对当前选中的文本内容执行下标操作
- * //第一次操作, 文本内容将变成下标文本
- * editor.execCommand( 'subscript' );
- *
- * //再次对同一文本内容执行, 则文本内容将恢复正常
- * editor.execCommand( 'subscript' );
- * ```
- */
- /**
- * 上标文本,与“subscript”命令互斥
- * @command superscript
- * @method execCommand
- * @remind 把选中的文本内容切换成上标文本, 如果当前选中的文本已经是上标, 则该操作会把文本内容还原成正常文本
- * @param { String } cmd 命令字符串
- * @example
- * ```javascript
- * //editor是编辑器实例
- * //对当前选中的文本内容执行上标操作
- * //第一次操作, 文本内容将变成上标文本
- * editor.execCommand( 'superscript' );
- *
- * //再次对同一文本内容执行, 则文本内容将恢复正常
- * editor.execCommand( 'superscript' );
- * ```
- */
- var basestyles = {
- 'bold':['strong','b'],
- 'italic':['em','i'],
- 'subscript':['sub'],
- 'superscript':['sup']
- },
- getObj = function(editor,tagNames){
- return domUtils.filterNodeList(editor.selection.getStartElementPath(),tagNames);
- },
- me = this;
- //添加快捷键
- me.addshortcutkey({
- "Bold" : "ctrl+66",//^B
- "Italic" : "ctrl+73", //^I
- "Underline" : "ctrl+85"//^U
- });
- me.addInputRule(function(root){
- utils.each(root.getNodesByTagName('b i'),function(node){
- switch (node.tagName){
- case 'b':
- node.tagName = 'strong';
- break;
- case 'i':
- node.tagName = 'em';
- }
- });
- });
- for ( var style in basestyles ) {
- (function( cmd, tagNames ) {
- me.commands[cmd] = {
- execCommand : function( cmdName ) {
- var range = me.selection.getRange(),obj = getObj(this,tagNames);
- if ( range.collapsed ) {
- if ( obj ) {
- var tmpText = me.document.createTextNode('');
- range.insertNode( tmpText ).removeInlineStyle( tagNames );
- range.setStartBefore(tmpText);
- domUtils.remove(tmpText);
- } else {
- var tmpNode = range.document.createElement( tagNames[0] );
- if(cmdName == 'superscript' || cmdName == 'subscript'){
- tmpText = me.document.createTextNode('');
- range.insertNode(tmpText)
- .removeInlineStyle(['sub','sup'])
- .setStartBefore(tmpText)
- .collapse(true);
- }
- range.insertNode( tmpNode ).setStart( tmpNode, 0 );
- }
- range.collapse( true );
- } else {
- if(cmdName == 'superscript' || cmdName == 'subscript'){
- if(!obj || obj.tagName.toLowerCase() != cmdName){
- range.removeInlineStyle(['sub','sup']);
- }
- }
- obj ? range.removeInlineStyle( tagNames ) : range.applyInlineStyle( tagNames[0] );
- }
- range.select();
- },
- queryCommandState : function() {
- return getObj(this,tagNames) ? 1 : 0;
- }
- };
- })( style, basestyles[style] );
- }
- };
|