www.pudn.com > dian1.rar > Editfunc.js


var gSetColorType = ""; 
var gIsIE = document.all; 
var gIEVer = fGetIEVer();
var gLoaded = false;
var ev = null;

function fGetEv(e){
	ev = e;
}
function fGetIEVer(){
	var iVerNo = 0;
	var sVer = navigator.userAgent;
	if(sVer.indexOf("MSIE")>-1){
		var sVerNo = sVer.split(";")[1];
		sVerNo = sVerNo.replace("MSIE","");
		iVerNo = parseFloat(sVerNo);
	}
	return iVerNo;
}
function fSetEditable(){
	var f = window.frames["HtmlEditor"];
	f.document.designMode="on";
	if(!gIsIE)
		f.document.execCommand("useCSS",false, true);
}
function fSetFrmClick(){
	var f = window.frames["HtmlEditor"];
	f.document.onmousemove = function(){
		window.onblur();
	}
	f.document.onclick = function(){
		fHideMenu();
	}
}
function fSetHtmlContent(){
	var html = oLinkField.value	
	if (html)
	{
		var header = "" ;
		var f = window.frames["HtmlEditor"];
		f.document.open();
		//f.document.getElementsByTagName("BODY")[0].innerHTML = oLinkField.value;
		f.document.write(header + oLinkField.value);
		f.document.close();
	}
}
function fSetColor(){
	var dvForeColor =document.getElementById("dvForeColor");
	if(dvForeColor.getElementsByTagName("TABLE").length == 1){
		dvForeColor.innerHTML = drawCube() + dvForeColor.innerHTML;
	}
}
//var oURL = document.referrer;
var oURL = location.href;
var offset = oURL.lastIndexOf("ID=");
if (offset == -1)
{
	alert("请传入调用参数ID,即隐藏的内容表单项ID!");
} else {
	offset = offset + 3
}
var sLinkFieldName = oURL.substring(offset)
var oLinkField = parent.document.getElementsByName(sLinkFieldName)[0];
var oForm = oLinkField.form ;

window.onload = function(){
	try{
		gLoaded = true;
		fSetEditable();
		fSetFrmClick();
		fSetHtmlContent();
		setLinkedField()
	}catch(e){
		// window.location.reload();
	}
}
window.onblur =function(){
	var dvForeColor =document.getElementById("dvForeColor");
	var dvPortrait =document.getElementById("dvPortrait");
	dvForeColor.style.display = "none";
	dvPortrait.style.display = "none";
	if(!gIsIE || 1==1){
		fHideMenu();
	}
}
window.onerror = function(){return true;};
document.onmousemove = function(e){
	if(gIsIE) var el = event.srcElement;
	else var el = e.target;
	var tdView = document.getElementById("tdView");
	var tdColorCode = document.getElementById("tdColorCode");
	var dvForeColor =document.getElementById("dvForeColor");
	var dvPortrait =document.getElementById("dvPortrait");
	var fontsize =document.getElementById("fontsize");
	var fontface =document.getElementById("fontface");
//	if(el.tagName == "IMG"){
//		el.style.borderRight="1px #cccccc solid";
//		el.style.borderBottom="1px #cccccc solid";
//	}else{
//		fSetImgBorder();
//	}
	if(el.tagName == "IMG"){
		try{
			if(fCheckIfColorBoard(el)){
				tdView.bgColor = el.parentNode.bgColor;
				tdColorCode.innerHTML = el.parentNode.bgColor
			}
		}catch(e){}
	}else{
		dvForeColor.style.display = "none";
		if(!fCheckIfPortraitBoard(el)) dvPortrait.style.display = "none";
		if(!fCheckIfFontFace(el)) fontface.style.display = "none";
		if(!fCheckIfFontSize(el)) fontsize.style.display = "none";
	}
}
document.onclick = function(e){
	if(gIsIE) var el = event.srcElement;
	else var el = e.target;
	var dvForeColor =document.getElementById("dvForeColor");
	var dvPortrait =document.getElementById("dvPortrait");
	if(el.id == "imgFontface" || el.id == "imgFontsize"){
	
	}else{
		fHideMenu();
	}
	if(el.tagName == "IMG"){
		try{
			if(fCheckIfColorBoard(el)){
				format(gSetColorType, el.parentNode.bgColor);
				dvForeColor.style.display = "none";
				return;
			}
		}catch(e){}
		try{
			if(fCheckIfPortraitBoard(el)){
				format("InsertImage", el.src);
				dvPortrait.style.display = "none";
				return;
			}
		}catch(e){}
	}
}
function format(type, para){
	var f = window.frames["HtmlEditor"];
	var sAlert = "";
	if(!gIsIE){
		switch(type){
			case "Cut":
				sAlert = "你的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl+X)来完成";
				break;
			case "Copy":
				sAlert = "你的浏览器安全设置不允许编辑器自动执行拷贝操作,请使用键盘快捷键(Ctrl+C)来完成";
				break;
			case "Paste":
				sAlert = "你的浏览器安全设置不允许编辑器自动执行粘贴操作,请使用键盘快捷键(Ctrl+V)来完成";
				break;
		}
	}
	if(sAlert != ""){
		alert(sAlert);
		return;
	}
	f.focus();
	if(!para)
		if(gIsIE)
			f.document.execCommand(type)
		else
			f.document.execCommand(type,false,false)
	else
		f.document.execCommand(type,false,para)
	f.focus();
}
function setMode(bStatus){
	var sourceEditor = document.getElementById("sourceEditor");
	var HtmlEditor = document.getElementById("HtmlEditor");
	var divEditor = document.getElementById("divEditor");
	var f = window.frames["HtmlEditor"];
	var body = f.document.getElementsByTagName("BODY")[0];
	if(bStatus){
		sourceEditor.style.display = "";
		HtmlEditor.style.height = "0px";
		divEditor.style.height = "0px";
		sourceEditor.value = body.innerHTML;
	}else{
		sourceEditor.style.display = "none";
		if(gIsIE){
			HtmlEditor.style.height = "286px";
			divEditor.style.height = "286px";
		}else{
			HtmlEditor.style.height = "283px";
			divEditor.style.height = "283px";
		}
		body.innerHTML = sourceEditor.value;
		//fSetEditable();
	}
}
function foreColor(e) {
	var sColor = fDisplayColorBoard(e);
	gSetColorType = "foreColor";
	if(gIsIE) format(gSetColorType, sColor);
}
function backColor(e){
	var sColor = fDisplayColorBoard(e);
	if(gIsIE)
		gSetColorType = "backcolor";
	else
		gSetColorType = "backcolor";
	if(gIsIE) format(gSetColorType, sColor);
}
function fDisplayColorBoard(e){
	if(gIsIE){
		var e = window.event;
	}
	if(gIEVer<=5.01 && gIsIE){
		var arr = showModalDialog("ColorSelect.htm", "", "font-family:Verdana; font-size:12; status:no; dialogWidth:21em; dialogHeight:21em");
		if (arr != null) return arr;
		return;
	}
	var dvForeColor =document.getElementById("dvForeColor");
	fSetColor();
	var iX = e.clientX;
	var iY = e.clientY;
	dvForeColor.style.display = "";
	dvForeColor.style.left = (iX-140) + "px";
	dvForeColor.style.top = (iY-10) + "px";
	return true;
}
function createLink() {
	var sURL=window.prompt("Enter link location (e.g. http://www.163.com/):", "http://");
	if ((sURL!=null) && (sURL!="http://")){
		format("CreateLink", sURL);
	}
}
function createImg()	{
	var sPhoto=prompt("请输入图片位置:", "http://");
	if ((sPhoto!=null) && (sPhoto!="http://")){
		format("InsertImage", sPhoto);
	}
}
function addPortrait(e){
	if(gIEVer<=5.01 && gIsIE){
		var imgurl = showModalDialog("portraitSelect.htm","", "font-family:Verdana; font-size:12; status:no; unadorned:yes; scroll:no; resizable:yes;dialogWidth:40em; dialogHeight:20em");
		if (imgurl != null)	format("InsertImage", imgurl);
		return;
	}
	var dvPortrait =document.getElementById("dvPortrait");
	var tbPortrait = document.getElementById("tbPortrait");
	var iX = e.clientX;
	var iY = e.clientY;
	dvPortrait.style.display = "";
	if(window.screen.width == 1024){
		dvPortrait.style.left = (iX-380) + "px";
	}else{
		if(gIsIE)
			dvPortrait.style.left = (iX-380) + "px";
		else
			dvPortrait.style.left = (iX-380) + "px";
	}
	dvPortrait.style.top = (iY-8) + "px";
	dvPortrait.innerHTML = ''+ drawPortrats() +'
'; } function fCheckIfColorBoard(obj){ if(obj.parentNode){ if(obj.parentNode.id == "dvForeColor") return true; else return fCheckIfColorBoard(obj.parentNode); }else{ return false; } } function fCheckIfPortraitBoard(obj){ if(obj.parentNode){ if(obj.parentNode.id == "dvPortrait") return true; else return fCheckIfPortraitBoard(obj.parentNode); }else{ return false; } } function fCheckIfFontFace(obj){ if(obj.parentNode){ if(obj.parentNode.id == "fontface") return true; else return fCheckIfFontFace(obj.parentNode); }else{ return false; } } function fCheckIfFontSize(obj){ if(obj.parentNode){ if(obj.parentNode.id == "fontsize") return true; else return fCheckIfFontSize(obj.parentNode); }else{ return false; } } function fImgOver(el){ if(el.tagName == "IMG"){ el.style.borderRight="1px #cccccc solid"; el.style.borderBottom="1px #cccccc solid"; } } function fImgMoveOut(el){ if(el.tagName == "IMG"){ el.style.borderRight="1px #F3F8FC solid"; el.style.borderBottom="1px #F3F8FC solid"; } } String.prototype.trim = function(){ return this.replace(/(^\s*)|(\s*$)/g, ""); } function fSetBorderMouseOver(obj) { obj.style.borderRight="1px solid #aaa"; obj.style.borderBottom="1px solid #aaa"; obj.style.borderTop="1px solid #fff"; obj.style.borderLeft="1px solid #fff"; /*var sd = document.getElementsByTagName("div"); for(i=0;i/g, ">") ; text = text.replace(/'/g, "’") ; text = text.replace(/\ /g," "); text = text.replace(/\n/g,"
"); text = text.replace(/\t/g,"    "); return text; } //=============================================== // 单个过滤 // 输入参数: // s_Content : 要转换的数据字符串 // s_Filter : 要过滤掉的单个格式 //=============================================== function DecodeFilter(html, filter){ switch(filter.toUpperCase()){ case "SCRIPT": // 去除所有客户端脚本javascipt,vbscript,jscript,js,vbs,event,... html = execRE("]*>", "", html); html = execRE("(javascript|jscript|vbscript|vbs):", "$1:", html); html = execRE("on(mouse|exit|error|click|key)", "on$1", html); html = execRE("&#", "&#", html); break; case "TABLE": // 去除表格
html = execRE("]*>", "", html); html = execRE("]*>", "", html); html = execRE("]*>", "", html); html = execRE("]*>", "", html); break; case "CLASS": // 去除样式类class="" html = execRE("(<[^>]+) class=[^ |^>]*([^>]*>)", "$1 $2", html) ; break; case "STYLE": // 去除样式style="" html = execRE("(<[^>]+) style=\"[^\"]*\"([^>]*>)", "$1 $2", html); break; case "XML": // 去除XML html = execRE("<\\?xml[^>]*>", "", html); break; case "NAMESPACE": // 去除命名空间 html = execRE("<\/?[a-z]+:[^>]*>", "", html); break; case "FONT": // 去除字体 html = execRE("]*>", "", html); break; case "MARQUEE": // 去除字幕 html = execRE("]*>", "", html); break; case "OBJECT": // 去除对象 html = execRE("]*>", "", html); html = execRE("]*>", "", html); html = execRE("]*>", "", html); break; default: } return html; } // ============================================ // 执行正则表达式替换 // ============================================ function execRE(re, rp, content) { oReg = new RegExp(re, "ig"); r = content.replace(oReg, rp); return r; } // 设置所属表单的提交或reset事件 function setLinkedField() { if (! oLinkField) return ; var oForm = oLinkField.form ; if (!oForm) return ; oForm.attachEvent("onsubmit", AttachSubmit); oForm.attachEvent("onreset", AttachReset); } // 提交表单 function AttachSubmit() { var html = window.frames["HtmlEditor"].document.getElementsByTagName("BODY")[0].innerHTML; if ( (html.toLowerCase() == "

 

") || (html.toLowerCase() == "

") ){ html = ""; } oLinkField.value = html } // 附加Reset事件 function AttachReset() { window.frames["HtmlEditor"].document.getElementsByTagName("BODY")[0].innerHTML = oLinkField.value; }