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

📄 transform.js

📁 wince 电池电源管理文件集 wince 电池电源管理文件集
💻 JS
字号:
var htmlElements = "|address|a|blockquote|br|big|b|center|div|dl|em|fieldset|font|h1|h2|h3|h4|h5|h6|i|label|legend|li|link|ol|option|optgroup|pre|p|small|select|span|strong|sub|sup|s|table|tbody|td|textarea|thead|th|tr|ul|u|xmp|img|br|hr|input|xmp|strong|";

var editorTransforms = {
	"\<P\>&nbsp;\<\/P\>":"",
	"\<P\>\<\/P\>":"",
	"\<P\>\<BR\>\<\/P\>":"<br/>"
}

String.prototype.Trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }


var filterTagNames = new Array();

var _Node_Getxml = function()
{
	var oSerializer = new XMLSerializer();
	return oSerializer.serializeToString(this);
}

var getXMLObject = function()
{
	var xml = null;
	if ( window.ActiveXObject ){
		var prefix = ["MSXML3","MSXML2","MSXML","Microsoft"];
		for ( var i = 0; i < prefix.length; i++ ) {
			try
			{
				xml = new ActiveXObject( prefix[i] + ".DOMDocument" );
				if ( xml ) break;		
			} catch (e) { }
		}
	}else{
		xml = document.implementation.createDocument('', '', null);
		Node.prototype.__defineGetter__('xml', _Node_Getxml);
	}
	return xml;

}

var class_Transform = function ( sourceDoc )
{
	var XML = getXMLObject();

	this.toXHTML = function ()
	{
		var MainNode = XML.appendChild( XML.createElement( "XHTML" ) );
		filterElement(sourceDoc.body);
		_AppendChildNodes(MainNode, sourceDoc.body);
		var sXHTML = MainNode.xml;
		sXHTML = filterXHTMLSTR(sXHTML);
		sXHTML = filterTag(sXHTML);
		return sXHTML;
	}

	var _AppendChildNodes = function( xmlNode, htmlNode )
	{
		var oChildren = htmlNode.childNodes;
		var i = 0;
		while ( i < oChildren.length )
		{
			i += _AppendNode( xmlNode, oChildren[i] );
		}
	}

	var _AppendNode = function( xmlNode, htmlNode )
	{
		var iAddedNodes = 1;
		switch ( htmlNode.nodeType )
		{
			case 1 :
				var sNodeName = fixtag(htmlNode.nodeName.toLowerCase());
				if( sNodeName == "" ) break;
				var oNode = xmlNode.appendChild( XML.createElement( sNodeName ) );
				var oAttributes = htmlNode.attributes;
				for (var n=0 ; n < oAttributes.length ; n++)
				{
					var oAttribute = oAttributes[n];
					if ( oAttribute.specified && oAttribute.nodeName.toLowerCase() + "" != "style" ) _AppendAttribute( oNode, fixtag(oAttribute.nodeName.toLowerCase() + "" ), oAttribute.nodeValue + "" );
				}
				var cssText = htmlNode.style.cssText;

				if ( cssText != "" )
				{
					if (navigator.appVersion.indexOf("MSIE") != -1 ) cssText = cssText + ";";
					_AppendAttribute( oNode, "style", cssText );
				}
				
				if ( htmlNode.childNodes.length == 0 )
				{
					switch ( sNodeName )
					{
						case "img" :case "input" :case "br" : case "hr" :case "param" :break;

						default :
							oNode.appendChild( XML.createTextNode( "" ) );
							break;
					}
				}
				switch ( sNodeName )
				{
					case "abbr" :
						if ( document.all )
						{
							var oNextNode=htmlNode.nextSibling;
							while ( true )
							{
								iAddedNodes ++;
								if ( oNextNode && oNextNode.nodeName != "/ABBR" )
								{
									_AppendNode(oNode, oNextNode);
									oNextNode = oNextNode.nextSibling;
								}else
								{
									break;
								}
							}
						}
						break;
					case "area" : 
						if ( document.all && ! oNode.attributes.getNamedItem( "coords" ) )
						{
							var sCoords = htmlNode.getAttribute("coords", 2);
							if ( sCoords && sCoords !="0,0,0" ) _AppendAttribute( oNode, "coords", sCoords );
						}
						break;
					case "img" : 
						if ( !oNode.attributes.getNamedItem( "alt" ) ) _AppendAttribute(oNode, "alt", "");
						break;
					default :
						_AppendChildNodes(oNode, htmlNode);
						break;
					};
				case 3 : 
					if ( htmlNode.nodeValue != null ) xmlNode.appendChild(XML.createTextNode( htmlNode.nodeValue ));
					break;
				//default : xmlNode.appendChild(XML.createComment( "Element not supported - Type: " + htmlNode.nodeType + " Name: " + htmlNode.nodeName ));break;
			}
			return iAddedNodes;
		}

	var _AppendAttribute = function ( xmlNode, attributeName, attributeValue )
	{
		if( checkattributeName(attributeName) && attributeName.indexOf("_moz") == -1 && attributeName.substring(0,2) != "on" && attributeValue.indexOf("_moz") == -1 && attributeName != "" )
		{
			var oXmlAtt = XML.createAttribute(attributeName);
			if ( typeof( attributeValue ) == "boolean" && attributeValue )
			{
				oXmlAtt.nodeValue = attributeName;
			}
			else
			{
				oXmlAtt.nodeValue = attributeValue;
			}
			xmlNode.attributes.setNamedItem(oXmlAtt);
		}
	}


	var fixtag = function (text)
	{
		return text.replace(/&|\/|<|>|\*|#|:|;|=|\?|\)|\(|%|\[|\]|\$| /g, "") ;
	}

	var checkattributeName = function (attributeName)
	{
		var re = new RegExp(/&|\/|<|>|\*|#|:|;|=|\?|\)|\(|%|\[|\]|\$| /gi);
		if( re.test(attributeName ) )
		{
			return false;
		}else{
			var Re = new RegExp(/[0-9]/gi);
			return !Re.test(attributeName.substring(0,1));
		}
	}

	var filterHREFElement = function ( obj )
	{		
		if ( obj == null || obj.attributes == null || obj.attributes.length == 0 ) return;
		var aobj = obj.attributes["href"];
		var av = "";
		if ( aobj != null && aobj.nodeValue != null )
		{
			av = aobj.nodeValue.toLowerCase();
			if ( av.length >= 11 && av.substring(0,11) == "javascript:" )
			{
				aobj.nodeValue = "";
			}else
			{
				if ( av.length >= 9 && av.substring(0,9) == "vbscript:" ) aobj.nodeValue = "";
			}
		}
	}

	var filterStyleElement = function ( obj )
	{		
		if ( obj == null || obj.attributes == null || obj.attributes.length == 0 ) return;
		var aobj = obj.getAttribute("style");
		var av = "";
		for(var e in obj.style) document.getElementById("test").innerHTML += e + "<br>";
		if ( aobj != null && aobj.nodeValue != null )
		{
			av = aobj.nodeValue.toLowerCase();
			var re = new RegExp("behavior","gi");
			//alert(re.test(av));
			aobj.nodeValue = av.replace(av,"");
		}
	}

	var filterElement = function ( obj )
	{
		if ( obj == null  || obj.childNodes.length == 0 ) return;
		for ( var i = 0 ; i < obj.childNodes.length ; i ++ )
		{
			filterHREFElement(obj.childNodes[i]);
			//if ( obj.childNodes[i].nodeValue != null ) obj.childNodes[i].nodeValue = obj.childNodes[i].nodeValue.Trim();
			var tagName = obj.childNodes[i].tagName;
			if ( tagName == null ) tagName = "";
			tagName = tagName.toLowerCase();
			if ( htmlElements.indexOf("|" + tagName + "|") < 0 && tagName != "" )
			{
				filterTagNames[filterTagNames.length] = tagName.replace("\\","\\\\");
			}
			if ( obj.childNodes[i].childNodes.length > 0 ) filterElement( obj.childNodes[i] );
		}
	}

	var filterTag = function ( s )
	{
		for ( var i = 0 ; i < filterTagNames.length ; i ++ )
		{
			var re = new RegExp("\<" + filterTagNames[i] + "(.[^\>]*)\>","gi");
			s = s.replace(re,"");
			re = new RegExp("\<\/" + filterTagNames[i] + "(.[^\>]*)\>","gi");
			s = s.replace(re,"");
			re = new RegExp("\<" + filterTagNames[i] + "(.[^\>]*)\/\>","gi");
			s = s.replace(re,"");
			re = new RegExp("\<" + filterTagNames[i] + "\>","gi");
			s = s.replace(re,"");
			re = new RegExp("\<\/" + filterTagNames[i] + "\>","gi");
			s = s.replace(re,"");
			re = new RegExp("\<" + filterTagNames[i] + "\/\>","gi");
			s = s.replace(re,"");
			delete(re);
		}
		s = s.replace(/\<script.[^\>]*\>(.*)\<\/script\>/gi,"");
		s = s.replace(/\<script\>(.*)\<\/script\>/gi,"");

		return s;
	}

	function filterXHTMLSTR ( s )
	{
		s = s.replace(/\<xhtml\>(.*)\<\/xhtml\>/gi,"$1");
		s = s.replace("<XHTML>","");
		s = s.replace("</XHTML>","");
		s = s.replace("<XHTML/>","");
		return s;
	}
}

⌨️ 快捷键说明

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