⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editor_main.js

📁 Harvestman-最新版本
💻 JS
📖 第 1 页 / 共 4 页
字号:

  // check editor mode (don't perform actions in textedit mode)
  if (editor_obj.tagName.toLowerCase() == 'textarea') { return; }

  var editdoc = editor_obj.contentWindow.document;
  editor_focus(editor_obj);

  // get index and value for pulldowns
  var idx = button_obj.selectedIndex;
  var val = (idx != null) ? button_obj[ idx ].value : null;

  if (0) {}   // use else if for easy cutting and pasting

  //
  // CUSTOM BUTTONS START HERE
  //

  // Custom1
  else if (cmdID == 'custom1') {
    alert("Hello, I am custom button 1!");
  }

  // Custom2
  else if (cmdID == 'custom2') {  // insert some text from a popup window
    var myTitle = "This is a custom title";
    var myText = showModalDialog(_editor_url + "popups/custom2.html",
                                 myTitle,      // str or obj specified here can be read from dialog as "window.dialogArguments"
                                 "resizable: yes; help: no; status: no; scroll: no; ");
    if (myText) { editor_insertHTML(objname, myText); }
  }

  // Custom3
  else if (cmdID == 'custom3') {  // insert some text
    editor_insertHTML(objname, "<hr noshade color=#C0C0C0 size=1 style='border-style: dotted; border-width: 1'>");
  }

//WME WORD  
  else if (cmdID == 'word') {  
  var oTags = editdoc.all.tags("SPAN");  	
  if (oTags != null) {  		
  for (var i = oTags.length - 1; i >= 0; i--) {  			
  oTags[i].outerHTML = oTags[i].innerHTML;  		
  }  	
}    	

oTags = editdoc.all.tags("FONT");  	
if (oTags != null) {  	
for (var i = oTags.length - 1; i >= 0; i--) {  	
oTags[i].outerHTML = oTags[i].innerHTML;  	
}  	
}

  oTags = editdoc.all.tags("P");  	
  if (oTags != null) {  		
  for (var i = oTags.length - 1; i >= 0; i--) {  			
  cleanEmptyTag(oTags[i]);  		
  }  	
}  
  oTags = editdoc.all.tags("H1");  	
  if (oTags != null) {  		
  for (var i = oTags.length - 1; i >= 0; i--) {  			
  cleanEmptyTag(oTags[i]); 		
}  
}  
  oTags = editdoc.all.tags("H2");  	
  if (oTags != null) {  		
  for (var i = oTags.length - 1; i >= 0; i--) {  			
  cleanEmptyTag(oTags[i]); 		
}  
}
  oTags = editdoc.all.tags("H3");  	
  if (oTags != null) {  		
  for (var i = oTags.length - 1; i >= 0; i--) {  			
  cleanEmptyTag(oTags[i]); 		
}  
}
  oTags = editdoc.all.tags("H4");  	
  if (oTags != null) {  		
  for (var i = oTags.length - 1; i >= 0; i--) {  			
  cleanEmptyTag(oTags[i]); 		
}  
}	
  oTags = editdoc.all.tags("OL");  	
  if (oTags != null) {  		
  for (var i = oTags.length - 1; i >= 0; i--) {  			
  cleanEmptyTag(oTags[i]); 		
}  
}    	
  oTags = editdoc.all.tags("UL");  	
  if (oTags != null) {  		
  for (var i = oTags.length - 1; i >= 0; i--) {  			
  cleanEmptyTag(oTags[i]);  		}  	
}  
}

  //
  // END OF CUSTOM BUTTONS
  //

  // FontName
  else if (cmdID == 'FontName' && val) {
    editdoc.execCommand(cmdID,0,val);
  }

  // FontSize
  else if (cmdID == 'FontSize' && val) {
    editdoc.execCommand(cmdID,0,val);
  }

  // FontStyle (change CSS className)
  else if (cmdID == 'FontStyle' && val) {
    editdoc.execCommand('RemoveFormat');
    editdoc.execCommand('FontName',0,'636c6173734e616d6520706c616365686f6c646572');
    var fontArray = editdoc.all.tags("FONT");
    for (i=0; i<fontArray.length; i++) {
      if (fontArray[i].face == '636c6173734e616d6520706c616365686f6c646572') {
        fontArray[i].face = "";
        fontArray[i].className = val;
        fontArray[i].outerHTML = fontArray[i].outerHTML.replace(/face=['"]+/, "");
        }
    }
    button_obj.selectedIndex =0;
  }

  // fgColor and bgColor
  else if (cmdID == 'ForeColor' || cmdID == 'BackColor') {
    var oldcolor = _dec_to_rgb(editdoc.queryCommandValue(cmdID));
    var newcolor = showModalDialog(_editor_url + "popups/select_color.html", oldcolor, "resizable: no; help: no; status: no; scroll: no;");
    if (newcolor != null) { editdoc.execCommand(cmdID, false, "#"+newcolor); }
  }

  // execute command for buttons - if we didn't catch the cmdID by here we'll assume it's a
  // commandID and pass it to execCommand().   See http://msdn.microsoft.com/workshop/author/dhtml/reference/commandids.asp
  else {
    // subscript & superscript, disable one before enabling the other
    if (cmdID.toLowerCase() == 'subscript' && editdoc.queryCommandState('superscript')) { editdoc.execCommand('superscript'); }
    if (cmdID.toLowerCase() == 'superscript' && editdoc.queryCommandState('subscript')) { editdoc.execCommand('subscript'); }

    // insert link
    //if (cmdID.toLowerCase() == 'createlink'){
    //  editdoc.execCommand(cmdID,1);
    //  showModalDialog(_editor_url + "popups/insert_link.html", editdoc, "resizable: no; help: no; status: no; scroll: no; ");
    //}
	
	// insert link (modified)
	if (cmdID.toLowerCase() == 'createlink') {
	if (editdoc.selection.createRange().text != "") {
	var highlightedText = editdoc.selection.createRange().text;
	}
	else {
	var highlightedText = "";
	}
	var myText = showModalDialog(_editor_url + "popups/insert_hyperlink.html",
	highlightedText, "target is new Window");
	if (myText) { editor_insertHTML(objname, unescape( myText) ); }
	}

    // insert image
    else if (cmdID.toLowerCase() == 'insertimage'){
      showModalDialog(_editor_url + "popups/insert_image.html", editdoc, "resizable: no; help: no; status: no; scroll: no; ");
    }

    // insert table
    else if (cmdID.toLowerCase() == 'inserttable'){
      showModalDialog(_editor_url + "popups/insert_table.html?"+objname,
                                 window,
                                 "resizable: yes; help: no; status: no; scroll: no; ");
    }

    // all other commands microsoft Command Identifiers
    else { editdoc.execCommand(cmdID); }
  }

  editor_event(objname);
}





// WME: MS-Word clean-up (begin)
/* ---------------------------------------------------------------------- *\
  Function    : MS-Word clean-up 
  Description : replace textarea with wysiwyg editor
  Usage       : editor_generate("textarea_id",[height],[width]);
  Arguments   : objname - ID of textarea to replace
                w       - width of wysiwyg editor
                h       - height of wysiwyg editor
\* ---------------------------------------------------------------------- */
function cleanEmptyTag(oElem) {  	
if (oElem.hasChildNodes) {  		
var tmp = oElem  		
for (var k = tmp.children.length; k >= 0; k--) {  			
if (tmp.children[k] != null) {  				
cleanEmptyTag(tmp.children[k]);  			
}  		
}  
	
} 
 	
var oAttribs = oElem.attributes;  	
if (oAttribs != null) {  		
for (var j = oAttribs.length - 1; j >=0; j--) {  			
var oAttrib = oAttribs[j];  			
if (oAttrib.nodeValue != null) {  				
oAttribs.removeNamedItem('class')  			
}  	
	}  
	}  
	oElem.style.cssText = '';  	
if (oElem.innerHTML == '' || oElem.innerHTML == '&nbsp;') {  		
oElem.outerHTML = '';  	} 
}

function cleanTable(oElem) {  	
	oElem.style.cssText = '';  	
	var oAttribs = oElem.attributes;  	
	if (oAttribs != null) {  		
		for (var j = oAttribs.length - 1; j >=0; j--) {  			
			var oAttrib = oAttribs[j];  			
			if (oAttrib.nodeValue != null) {  				
				oAttribs.removeNamedItem('class')  			
			}  		
		}  	
	}    	
	var oTR = oElem.rows;  	
	if (oTR != null) {  		
		for (var r = oTR.length - 1; r >= 0; r--) {  			
			oTR[r].style.cssText = '';  		
		}  	
	}    	
	var oTD = oElem.cells;  	
	if (oTD != null) {  		
		for (var t = oTD.length - 1; t >= 0; t--) {  			
			oTD[t].style.cssText = '';  		
		}  	
	}  
}

/* ---------------------------------------------------------------------- *\
  Function    : editor_event
  Description : called everytime an editor event occurs
  Usage       : editor_event(objname, runDelay, eventName)
  Arguments   : objname - ID of textarea to replace
                runDelay: -1 = run now, no matter what
                          0  = run now, if allowed
                        1000 = run in 1 sec, if allowed at that point
\* ---------------------------------------------------------------------- */

function editor_event(objname,runDelay) {
  var config = document.all[objname].config;
  var editor_obj  = document.all["_" +objname+  "_editor"];       // html editor object
  if (runDelay == null) { runDelay = 0; }
  var editdoc;
  var editEvent = editor_obj.contentWindow ? editor_obj.contentWindow.event : event;

  // catch keypress events
    if (editEvent && editEvent.keyCode) {
      var ord       = editEvent.keyCode;    // ascii order of key pressed
      var ctrlKey   = editEvent.ctrlKey;
      var altKey    = editEvent.altKey;
      var shiftKey  = editEvent.shiftKey;

      if (ord == 16) { return; }  // ignore shift key by itself
      if (ord == 17) { return; }  // ignore ctrl key by itself
      if (ord == 18) { return; }  // ignore alt key by itself


       // cancel ENTER key and insert <BR> instead
//       if (ord == 13 && editEvent.type == 'keypress') {
//         editEvent.returnValue = false;
//         editor_insertHTML(objname, "<br>");
//         return;
//       }

      if (ctrlKey && (ord == 122 || ord == 90)) {     // catch ctrl-z (UNDO)
//      TODO: Add our own undo/redo functionality
//        editEvent.cancelBubble = true;
        return;
      }
      if ((ctrlKey && (ord == 121 || ord == 89)) ||
          ctrlKey && shiftKey && (ord == 122 || ord == 90)) {     // catch ctrl-y, ctrl-shift-z (REDO)
//      TODO: Add our own undo/redo functionality
        return;
      }
    }

  // setup timer for delayed updates (some events take time to complete)
  if (runDelay > 0) { return setTimeout(function(){ editor_event(objname); }, runDelay); }

  // don't execute more than 3 times a second (eg: too soon after last execution)
  if (this.tooSoon == 1 && runDelay >= 0) { this.queue = 1; return; } // queue all but urgent events
  this.tooSoon = 1;
  setTimeout(function(){
    this.tooSoon = 0;
    if (this.queue) { editor_event(objname,-1); };
    this.queue = 0;
    }, 333);  // 1/3 second


  editor_updateOutput(objname);
  editor_updateToolbar(objname);

}

/* ---------------------------------------------------------------------- *\
  Function    : editor_updateToolbar
  Description : update toolbar state
  Usage       :
  Arguments   : objname - ID of textarea to replace
                action  - enable, disable, or update (default action)
\* ---------------------------------------------------------------------- */

function editor_updateToolbar(objname,action) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -