1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- ///import core
- ///commands 加粗,斜体,上标,下标
- ///commandsName Bold,Italic,Subscript,Superscript
- ///commandsTitle 加粗,加斜,下标,上标
- /**
- * b u i等基础功能实现
- * @function
- * @name baidu.editor.execCommands
- * @param {String} cmdName bold加粗。italic斜体。subscript上标。superscript下标。
- */
- UE.plugins['basestyle'] = function(){
- 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
- });
- 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] );
- }
- };
|