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

📄 weiseditor.js

📁 网站编辑的软件
💻 JS
📖 第 1 页 / 共 5 页
字号:
			else
				El = evt.target; 
		}
		return El;
	},
	WEUserLanguage:function()
	{
		Editor.Config.lang = window.isIE?navigator.userLanguage:navigator.language; 
	},
	Clearn:function()
	{
		if (!Editor.Config.WEditorMode) return;
		Editor.Config.Document.body.innerHTML = "<br />";
		Editor.Config.Select();
	},
	configNodeAround:function(Node,range)
	{
		if (!Node.nextSibling) 
		{
			range.deleteContents(); 
			var _br = Editor.Config.Document.createElement('BR');
			range.insertNode(_br);
		}
		else
		{
			var flag = false;
			var tnode = null;
			tnode = Node.nextSibling;
			while (tnode)
			{
				if (tnode.nodeType==1) {flag = true;break;}
				else if (tnode.nodeType==3) 
				{
					if(tnode.nodeValue.trim()!='')
					{
						flag = true;break;
					}
				}

				tnode = tnode.nextSibling;
			}
			
			if (!flag) {
				range.deleteContents(); 
				var _br = Editor.Config.Document.createElement('BR');
				range.collapse(false);
				range.insertNode(_br);
			}
		}
	},
	execCMD:function(type,val)
	{
		if (val == null)
			Editor.Config.Document.execCommand(type);
		else
			Editor.Config.Document.execCommand(type,'',val);
		
		WeisEditor.Run.SaveDataStep();
		Editor.Config.Select();
	},
	FirefoxMenuType:function(type)
	{
		var typeStr = "selectall|justifyleft|justifycenter|justifyright|insertunorderedlist|insertorderedlist|bold|italic|underline|indent|outdent|undo|redo".split('|');
		for(var i=0;i<typeStr.length;i++)
			if (type == typeStr[i])
				return true;
		return false;
	},
	lookForwardById:function(elt, id, already_called) {

		for (var node = already_called ? elt.nextSibling : elt; node != null; node = node.nextSibling) {

			if (node.nodeType == 1) {
				next = Editor.Config._lookForwardByIdHelper(node, id);
				if (next != null) {
					return next;
				}
			}
		}

		if (elt.parentNode) {
			return Editor.Config._findChild(elt.parentNode, id);
		}

	},
	_lookForwardByIdHelper:function(elt, id) {
		if (elt['id'] == id) {
			return elt;
		}
			
		for (var node = elt.childNodes[0]; node != null; node = node.nextSibling) {
			var found = Editor.Config.lookForwardById(node, id);
			if (found != null) {
				return found;
			}
		}
	},
	_findChild:function(elt,id)
	{
		for (var node = elt.childNodes[0]; node != null; node = node.nextSibling) {
			if (node.id == id)
				return node;
		}
	},
	InitRun:function()
	{
		Editor.Config.HtmlEdit = $(Editor.Config.EditorID).contentWindow;
		Editor.Config.Document = window.isIE ? Editor.Config.HtmlEdit.document : $(Editor.Config.EditorID).contentDocument;
		
		Editor.Config.Document.open("text/html","replace");
		Editor.Config.Document.write('<html><head><script type="text/javascript"></script></head><body bgcolor='+Editor.Config.BackColor+' style="background:url('+Editor.Config.BackImage+') '+Editor.Config.BackColor+' repeat-y center top;background-attachment:fixed;" ></body></html>');
		Editor.Config.Document.close();
		
		if (window.isIE)
			Editor.Config.Document.body.contentEditable = true;
		else 
			Editor.Config.Document.designMode='on' ;
		
		var hidOBJ = parent.document.getElementById(Editor.Config.HidSaveID);
		
		if (hidOBJ)
			if (hidOBJ.value.trim()!='')
				Editor.Config.Document.body.innerHTML = hidOBJ.value+' '; 		
		
		if (!window.isIE){
			Editor.Config.Document.addEventListener("keypress",function(e){Editor.Config.ChkEnter();},false); 
			Editor.Config.Document.addEventListener("keydown",function(e){Editor.Config._keyDownListener();},true);  //for firefox
			Editor.Config.Document.addEventListener("mousedown",function(e){Editor.Config._mouseListenser();MenuItems.Func.CheckIsExist();},true);  //for firefox
			Editor.Config.Document.addEventListener("keyup",function(e){Editor.Config.ConvertPtoBR();},true); 
			//Editor.Config.Document.addEventListener("blur",function(e){Editor.replaceSPCTags(Editor.Config.WEditorMode);},false); 
		}
		else {
			Editor.Config.Document.attachEvent("onkeydown",function(e){Editor.Config._keyDownListener();});
			Editor.Config.Document.attachEvent("onkeypress",function(e){Editor.Config.ChkEnter();});
			Editor.Config.Document.attachEvent("onmousedown",function(e){Editor.Config._mouseListenser();MenuItems.Func.CheckIsExist();});
			Editor.Config.Document.attachEvent("onkeyup",function(){var E = Editor.Config._keyCode();if (!WeisEditor.Run.Typing)Editor.Config.PHRReplace();/*Editor.replaceSPCTags(Editor.Config.WEditorMode);*/ });
			//Editor.Config.Document.attachEvent("onblur",function(e){Editor.replaceSPCTags(Editor.Config.WEditorMode);});
		}
		
		window.parent.EditorAPI = Editor;

	},
	_keyDownListener:function()
	{
		var A = Editor.Config.WeisEvent();
		var E = Editor.Config._keyCode();
		if (!Editor.Config._IsSpecialKey(E)&&!(A.ctrlKey&&A.metaKey)&&!(E==46))
		{
			if (WeisEditor.Run.Typing==false)
			{
				if (window.isIE) Editor.Config.PHRReplace();
				WeisEditor.Run.SaveDataStep();
				WeisEditor.Run.Typing=true;
			}
		}	
		WeisEditor.Run.IsLocked=false;	

	},
	_mouseListenser:function()
	{		
		WeisEditor.Run.SaveDataStep();
		WeisEditor.Run.Typing=false;
		WeisEditor.Run.IsLocked=false;
	},
	_keyCode:function()
	{

		return Editor.Config.WeisEvent().keyCode || Editor.Config.WeisEvent().which;
			
	},
	_IsSpecialKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},
	ChkEnter:function(){
		
		Editor.Config.HtmlEdit.focus();
		var range = Editor.Config.GetRange();
		//if (!range) return;
		var E = Editor.Config._keyCode();
		var A = Editor.Config.WeisEvent();
		if(E==13){
			WeisEditor.Run.SaveDataStep();
			WeisEditor.Run.IsLocked=false;
			WeisEditor.Run.Typing=true?false:true; 
			
		}
		
		if (E == 13 && !A.shiftKey && !window.isIE && WeisConfig.EnterEventType == 'P')
		{
			var containerTag = "div|dl|li|ol|p|address|dir|h1|h2|h3|h4|h5|h6|menu|pre";
			var bigContainerTag = "body|td|form|center|blockquote|fieldset";
			
			var Tag = range.startContainer.parentNode;
			var scName = range.startContainer.parentNode.nodeName.toLowerCase();

			if (Editor.Config.equalSplitChar(containerTag,scName))
			{
				var Attris = Editor.Config.getTagAttributes(Tag);
				
				Editor.Config.pasteContent("WE_CONTHTML_CODE","______del_bigContainer__ReplaceAddr________");
				var __html = Tag.innerHTML ;
				
				__html = __html.replace('______del_bigContainer__ReplaceAddr________',"<\/"+scName+"><"+scName+" "+Attris+"><B id='______del_bigContainer__ReplaceAddr___1_____'></B>&nbsp;");
				
				__html = "<"+scName+" "+Attris+">" + __html + "<\/"+scName+">";
				
				range.selectNode(Tag);
				range.collapse(true);
				
				range.deleteContents();
				range.insertNode(range.createContextualFragment(__html));
				
				Tag.parentNode.removeChild(Tag);
				
				var delTag = Editor.Config.Document.getElementById('______del_bigContainer__ReplaceAddr___1_____');
				
				range.selectNodeContents(delTag.parentNode)
				range.collapse(true);
				
				var S = Editor.Config.Selection();
				S.removeAllRanges();
				S.addRange(range);
				delTag.parentNode.removeChild(delTag);

				WeisEditor.Run.SaveDataStep();
				Editor.Config.Select();

			}
			else if (Editor.Config.equalSplitChar(bigContainerTag,scName))
			{
				Editor.Config.pasteContent("WE_CONTHTML_CODE","______del_bigContainer__ReplaceAddr________");
				var __html ="<p>" + Tag.innerHTML + "</p>";
				__html = __html.replace('______del_bigContainer__ReplaceAddr________',"<\/p>\n<p id='______del_bigContainer__ReplaceAddr___2_____'>&nbsp;");
				
				Tag.innerHTML = __html;
				
				var delTag = Editor.Config.Document.getElementById('______del_bigContainer__ReplaceAddr___2_____');
				
				range.selectNodeContents(delTag)
				range.collapse(true);
				
				var S = Editor.Config.Selection();
				S.removeAllRanges();
				S.addRange(range);
				
				delTag.removeAttribute("id");
				
				WeisEditor.Run.SaveDataStep();
				Editor.Config.Select();
			}
			else
			{
				Editor.Config.pasteContent("WE_CONTHTML_CODE","______del_bigContainer__ReplaceAddr________");
				var C = [],_node;
				var N = 0;
				var outerTag = null;
				
				var __html = "";
				
				_node = Tag;
				while (_node)
				{
					var tagName = _node.nodeName.toLowerCase();
					C.push(_node);
					if (Editor.Config.equalSplitChar(containerTag,tagName) || Editor.Config.equalSplitChar(bigContainerTag,tagName) || _node.nodeName.toLowerCase() == 'body')
					{
						__html = _node.innerHTML;
						outerTag = _node;
						break;
					}
					
					_node = _node.parentNode;
				}
				
				for (var i=0;i<C.length;i++)
				{
					N++;
					var repTag = '';
					var repAttri = '';

					if (C[i].nodeName == 'BODY' || C[i].nodeName == 'TD' || C[i].nodeName == 'FORM')
					{
						repTag = 'P';
						repAttri = ' ';
					}
					else
					{
						
						repTag = C[i].nodeName.toLowerCase();
						repAttri = Editor.Config.getTagAttributes(C[i]);
					}
					
					if (N == 1)
						__html = __html.replace('______del_bigContainer__ReplaceAddr________','<\/'+repTag+'>______del_bigContainer__ReplaceAddr________<'+repTag+' '+repAttri+'>&nbsp;<B id=\'______del_bigContainer__ReplaceAddr_____3___\'></B>');
					else
						__html = __html.replace('______del_bigContainer__ReplaceAddr________','<\/'+repTag+'>______del_bigContainer__ReplaceAddr________<'+repTag+' '+repAttri+'>');
					
				}
				
				__html = __html.replace('______del_bigContainer__ReplaceAddr________','');
				
				if (outerTag.nodeName == 'BODY' || outerTag.nodeName == 'FORM' || outerTag.nodeName == 'TD')
				{
					outerTag.innerHTML = '<p>' + __html + '</p>';
				}
				else
				{
					var __outerArrti = Editor.Config.getTagAttributes(outerTag);
					__html = "<"+outerTag.nodeName.toLowerCase()+" "+__outerArrti+">" + __html +"<\/"+outerTag.nodeName.toLowerCase()+">";
					range.selectNode(outerTag);
					range.collapse(true);
					
					range.deleteContents();
					range.insertNode(range.createContextualFragment(__html));
					
					outerTag.parentNode.removeChild(outerTag);
				}

				var FN = Editor.Config.Document.getElementById('______del_bigContainer__ReplaceAddr_____3___');
				range.selectNodeContents(FN.parentNode)
				range.collapse(true);
				
				var S = Editor.Config.Selection();
				S.removeAllRanges();
				S.addRange(range);
				
				FN.parentNode.removeChild(FN);

				WeisEditor.Run.SaveDataStep();
				Editor.Config.Select();
			}
			
			A.stopPropagation(); 
			A.preventDefault(); 
			returnValue = false;
			return false;
		}
		
		Editor.Config.ConvertPtoBR();//IE
		
		return true;
	},
	ConvertPtoBR:function()
	{
		
		var range = Editor.Config.GetRange();
		//if (!range) return;
		var A = Editor.Config.WeisEvent();
		var E = Editor.Config._keyCode();
		if (E == 13 && !A.shiftKey && window.isIE && WeisConfig.EnterEventType == 'BR')
		{
			range.pasteHTML('<br />');
			
			WeisEditor.Run.SaveDataStep();
			Editor.Config.Select();
				
			A.cancelBubble = true; 
			//A.preventDefault();
			A.returnValue = false;
			return false;
		} 
	},
	equalSplitChar:function(splitStr,chr)
	{
		var sp = splitStr.split('|');
		for (var i=0;i<sp.length;i++)
			if (sp[i] == chr)
				return true;
		return false;
	},
	getTagAttributes:function(Node)
	{
		Node = Node.cloneNode(true);
		var outer = Editor.Config.Document.createElement('DIV');
		outer.appendChild(Node);
		
		if (RegExp.$1)/(.*)/.exec('');
		var hrefAttris = outer.innerHTML;
		var Attris = "";
		var re = new RegExp('<[a-z]([^>]*?)>','gi');
		re.exec(hrefAttris);
		if (RegExp.$1) Attris = RegExp.$1;
		
		return Attris;
	},
	PHRReplace:function(){
		var A = Editor.Config.WeisEvent();
		var E = Editor.Config._keyCode();
		//alert(E)
		if (Editor.Config._IsSpecialKey(E)||(A.ctrlKey||A.metaKey)||(E==46)||(E>=91)) //91,92winKey
			return;
			
		Editor.Config.HtmlEdit.focus();
		var range=Editor.Config.GetRange();
		var E = Editor.Config._keyCode();
		
		range.pasteHTML('<B id=\'__________Clear__P____Hr_______\'></B>');
		Editor.clearHTML(true);
		var NodeID=Editor.Config.Document.getElementById('__________Clear__P____Hr_______');
		range.moveToElementText(NodeID);
		range.select();
		NodeID.parentNode.removeChild(NodeID);
	},
	LoadEditor:function()
	{
		var html = "";
		html += '<iframe id=\''+Editor.Config.EditorID+'\' height=\''+MU.Config.IfrHeight+'\' frameborder=\'0\' hspace=\'0\' vspace=\'0\' marginwidth=\'5\' marginheight=\'5\'></iframe>';
		html += '<input type=\'hidden\' id=\''+Editor.Config.HidSaveID+'\' name=\''+Editor.Config.HidSaveID+'\' value=\'\' />';
		html += '<textarea id=\''+Editor.Config.EditorID+'Area\' height=\''+MU.Config.IfrHeight+'\' style=\'display:none;height:'+MU.Config.IfrHeight+'\'></textarea></div>';
		$('ifrDiv').innerHTML = html; 
	}
};

WeisEditor.prototype.format = function(type)
{

	if (!Editor.Config.WEditorMode) return;
	Editor.Config.HtmlEdit.focus();
	WeisEditor.Run.SaveDataStep();
	if (window.isIE)
	{
		Editor.Config.execCMD(type);
	}
	else
	{
		if (Editor.Config.FirefoxMenuType(type)) 
		{
			Editor.Config.Document.execCommand(type,false,'');
			WeisEditor.Run.SaveDataStep();
			Editor.Config.Select();
		}
		else if (type == 'copy') 
		{
			Editor.Config.CopyPanel = Editor.Config.GetRange().toString() + "";
			WeisEditor.Run.SaveDataStep();
		}
		else if (type == 'paste')
		{				
			Editor.Config.pasteContent('WE_CONTHTML_CODE',Editor.Config.CopyPanel);
			WeisEditor.Run.SaveDataStep();
			Editor.Config.Select();
		}
		else if(type == 'cut')
		{
			Editor.Config.CopyPanel = Editor.Config.GetRange().toString() + "";
			Editor.Config.pasteContent("WE_CONTHTML_CODE","");
			WeisEditor.Run.SaveDataStep();
			Editor.Config.Select();
		}
	}
	
};

WeisEditor.prototype.createLink = function()
{
	if (!Editor.Config.WEditorMode) return;
	
	Editor.Config.HtmlEdit.focus();
	WeisEditor.Run.SaveDataStep();
	
	if (window.isIE) {Editor.Config.execCMD('createlink');}
	else
	{
		var url = prompt(WeisLang.InsertHyperLink+':', 'http://');
		if ((url != null) && (url != "http://") && url.toLowerCase().indexOf("http://") == 0)
		{
			if (Editor.Config.GetRange().toString() == "")
			{
				WeisEditor.Array.length = 0;
				WeisEditor.Array[WeisEditor.Array.length] = new hashtable("href",url);
				WeisEditor.Array[WeisEditor.Array.length] = new hashtable("innerHTML",url);
				Editor.Config.pasteContent('A','');
			}
			else

⌨️ 快捷键说明

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