<script language="JavaScript" type="Text/JavaScript">
<!--
if(window.Event){// 修正Event的DOM
??? /*
??????????????????????????????? IE5??????? MacIE5??????? Mozilla??????? Konqueror2.2??????? Opera5
??? event??????????????????????? yes??????? yes??????????? yes??????????? yes??????????????????? yes
??? event.returnValue??????????? yes??????? yes??????????? no??????????? no??????????????????? no
??? event.cancelBubble??????????? yes??????? yes??????????? no??????????? no??????????????????? no
??? event.srcElement??????????? yes??????? yes??????????? no??????????? no??????????????????? no
??? event.fromElement??????????? yes??????? yes??????????? no??????????? no??????????????????? no
???
??? */
??? Event.prototype.__defineSetter__("returnValue",function(b){//
??????? if(!b)this.preventDefault();
??????? return b;
??????? });
??? Event.prototype.__defineSetter__("cancelBubble",function(b){// 設(shè)置或者檢索當(dāng)前事件句柄的層次冒泡
??????? if(b)this.stopPropagation();
??????? return b;
??????? });
??? Event.prototype.__defineGetter__("srcElement",function(){
??????? var node=this.target;
??????? while(node.nodeType!=1)node=node.parentNode;
??????? return node;
??????? });
??? Event.prototype.__defineGetter__("fromElement",function(){// 返回鼠標(biāo)移出的源節(jié)點(diǎn)
??????? var node;
??????? if(this.type=="mouseover")
??????????? node=this.relatedTarget;
??????? else if(this.type=="mouseout")
??????????? node=this.target;
??????? if(!node)return;
??????? while(node.nodeType!=1)node=node.parentNode;
??????? return node;
??????? });
??? Event.prototype.__defineGetter__("toElement",function(){// 返回鼠標(biāo)移入的源節(jié)點(diǎn)
??????? var node;
??????? if(this.type=="mouseout")
??????????? node=this.relatedTarget;
??????? else if(this.type=="mouseover")
??????????? node=this.target;
??????? if(!node)return;
??????? while(node.nodeType!=1)node=node.parentNode;
??????? return node;
??????? });
??? Event.prototype.__defineGetter__("offsetX",function(){
??????? return this.layerX;
??????? });
??? Event.prototype.__defineGetter__("offsetY",function(){
??????? return this.layerY;
??????? });
??? }
if(window.Document){// 修正Document的DOM
??? /*
??????????????????????????????? IE5??????? MacIE5??????? Mozilla??????? Konqueror2.2??????? Opera5
??? document.documentElement??? yes??????? yes??????????? yes??????????? yes??????????????????? no
??? document.activeElement??????? yes??????? null??????? no??????????? no??????????????????? no
???
??? */
??? }
if(window.Node){// 修正Node的DOM
??? /*
??????????????????????????????? IE5??????? MacIE5??????? Mozilla??????? Konqueror2.2??????? Opera5
??? Node.contains??????????????? yes??????? yes??????????? no??????????? no??????????????????? yes
??? Node.replaceNode??????????? yes??????? no??????????? no??????????? no??????????????????? no
??? Node.removeNode??????????????? yes??????? no??????????? no??????????? no??????????????????? no
??? Node.children??????????????? yes??????? yes??????????? no??????????? no??????????????????? no
??? Node.hasChildNodes??????????? yes??????? yes??????????? yes??????????? yes??????????????????? no
??? Node.childNodes??????????????? yes??????? yes??????????? yes??????????? yes??????????????????? no
??? Node.swapNode??????????????? yes??????? no??????????? no??????????? no??????????????????? no
??? Node.currentStyle??????????? yes??????? yes??????????? no??????????? no??????????????????? no
???
??? */
??? Node.prototype.replaceNode=function(Node){// 替換指定節(jié)點(diǎn)
??????? this.parentNode.replaceChild(Node,this);
??????? }
??? Node.prototype.removeNode=function(removeChildren){// 刪除指定節(jié)點(diǎn)
??????? if(removeChildren)
??????????? return this.parentNode.removeChild(this);
??????? else{
??????????? var range=document.createRange();
??????????? range.selectNodeContents(this);
??????????? return this.parentNode.replaceChild(range.extractContents(),this);
??????????? }
??????? }
??? Node.prototype.swapNode=function(Node){// 交換節(jié)點(diǎn)
??????? var nextSibling=this.nextSibling;
??????? var parentNode=this.parentNode;
??????? node.parentNode.replaceChild(this,Node);
??????? parentNode.insertBefore(node,nextSibling);
??????? }
??? }
if(window.HTMLElement){
??? HTMLElement.prototype.__defineGetter__("all",function(){
??????? var a=this.getElementsByTagName("*");
??????? var node=this;
??????? a.tags=function(sTagName){
??????????? return node.getElementsByTagName(sTagName);
??????????? }
??????? return a;
??????? });
??? HTMLElement.prototype.__defineGetter__("parentElement",function(){
??????? if(this.parentNode==this.ownerDocument)return null;
??????? return this.parentNode;
??????? });
??? HTMLElement.prototype.__defineGetter__("children",function(){
??????? var tmp=[];
??????? var j=0;
??????? var n;
??????? for(var i=0;i<this.childNodes.length;i++){
??????????? n=this.childNodes[i];
??????????? if(n.nodeType==1){
??????????????? tmp[j++]=n;
??????????????? if(n.name){
??????????????????? if(!tmp[n.name])
??????????????????????? tmp[n.name]=[];
??????????????????? tmp[n.name][tmp[n.name].length]=n;
??????????????????? }
??????????????? if(n.id)
??????????????????? tmp[n.id]=n;
??????????????? }
??????????? }
??????? return tmp;
??????? });
??? HTMLElement.prototype.__defineGetter__("currentStyle", function(){
??????? return this.ownerDocument.defaultView.getComputedStyle(this,null);
??????? });
??? HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML){
??????? var r=this.ownerDocument.createRange();
??????? r.setStartBefore(this);
??????? var df=r.createContextualFragment(sHTML);
??????? this.parentNode.replaceChild(df,this);
??????? return sHTML;
??????? });
??? HTMLElement.prototype.__defineGetter__("outerHTML",function(){
??????? var attr;
??????? var attrs=this.attributes;
??????? var str="<"+this.tagName;
??????? for(var i=0;i<attrs.length;i++){
??????????? attr=attrs[i];
??????????? if(attr.specified)
??????????????? str+=" "+attr.name+'="'+attr.value+'"';
??????????? }
??????? if(!this.canHaveChildren)
??????????? return str+">";
??????? return str+">"+this.innerHTML+"</"+this.tagName+">";
??????? });
??? HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){
??????? switch(this.tagName.toLowerCase()){
??????????? case "area":
??????????? case "base":
??????????? case "basefont":
??????????? case "col":
??????????? case "frame":
??????????? case "hr":
??????????? case "img":
??????????? case "br":
??????????? case "input":
??????????? case "isindex":
??????????? case "link":
??????????? case "meta":
??????????? case "param":
??????????????? return false;
??????????? }
??????? return true;
??????? });
?
??? HTMLElement.prototype.__defineSetter__("innerText",function(sText){
??????? var parsedText=document.createTextNode(sText);
??????? this.innerHTML=parsedText;
??????? return parsedText;
??????? });
??? HTMLElement.prototype.__defineGetter__("innerText",function(){
??????? var r=this.ownerDocument.createRange();
??????? r.selectNodeContents(this);
??????? return r.toString();
??????? });
??? HTMLElement.prototype.__defineSetter__("outerText",function(sText){
??????? var parsedText=document.createTextNode(sText);
??????? this.outerHTML=parsedText;
??????? return parsedText;
??????? });
??? HTMLElement.prototype.__defineGetter__("outerText",function(){
??????? var r=this.ownerDocument.createRange();
??????? r.selectNodeContents(this);
??????? return r.toString();
??????? });
??? HTMLElement.prototype.attachEvent=function(sType,fHandler){
??????? var shortTypeName=sType.replace(/on/,"");
??????? fHandler._ieEmuEventHandler=function(e){
??????????? window.event=e;
??????????? return fHandler();
??????????? }
??????? this.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);
??????? }
??? HTMLElement.prototype.detachEvent=function(sType,fHandler){
??????? var shortTypeName=sType.replace(/on/,"");
??????? if(typeof(fHandler._ieEmuEventHandler)=="function")
??????????? this.removeEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);
??????? else
??????????? this.removeEventListener(shortTypeName,fHandler,true);
??????? }
??? HTMLElement.prototype.contains=function(Node){// 是否包含某節(jié)點(diǎn)
??????? do if(Node==this)return true;
??????? while(Node=Node.parentNode);
??????? return false;
??????? }
??? HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode){
??????? switch(where){
??????????? case "beforeBegin":
??????????????? this.parentNode.insertBefore(parsedNode,this);
??????????????? break;
??????????? case "afterBegin":
??????????????? this.insertBefore(parsedNode,this.firstChild);
??????????????? break;
??????????? case "beforeEnd":
??????????????? this.appendChild(parsedNode);
??????????????? break;
??????????? case "afterEnd":
??????????????? if(this.nextSibling)
??????????????????? this.parentNode.insertBefore(parsedNode,this.nextSibling);
??????????????? else
??????????????????? this.parentNode.appendChild(parsedNode);
??????????????? break;
??????????? }
??????? }
??? HTMLElement.prototype.insertAdjacentHTML=function(where,htmlStr){
??????? var r=this.ownerDocument.createRange();
??????? r.setStartBefore(this);
??????? var parsedHTML=r.createContextualFragment(htmlStr);
??????? this.insertAdjacentElement(where,parsedHTML);
??????? }
??? HTMLElement.prototype.insertAdjacentText=function(where,txtStr){
??????? var parsedText=document.createTextNode(txtStr);
??????? this.insertAdjacentElement(where,parsedText);
??????? }
??? HTMLElement.prototype.attachEvent=function(sType,fHandler){
??????? var shortTypeName=sType.replace(/on/,"");
??????? fHandler._ieEmuEventHandler=function(e){
??????????? window.event=e;
??????????? return fHandler();
??????????? }
??????? this.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);
??????? }
??? HTMLElement.prototype.detachEvent=function(sType,fHandler){
??????? var shortTypeName=sType.replace(/on/,"");
??????? if(typeof(fHandler._ieEmuEventHandler)=="function")
??????????? this.removeEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);
??????? else
??????????? this.removeEventListener(shortTypeName,fHandler,true);
??????? }
??? }
//-->
</script>