作家
登录

javascript firefox兼容ie的dom方法脚本

作者: 来源:www.28hudong.com 2013-03-30 03:05:01 阅读 我要评论

if(!document.all){ //zzcv的ff ie兼容脚本 /*脚本没有解决的问题及处理: 2.IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象. 解决方法:统一使用[]获取集合类对象. 3.IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性. 解决方法:统一通过getAttribute()获取自定义属性. 4.IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能. 5.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。 解决方法:使用document.getElementById("idName")代替document.idName.最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var,以避免歧义. 6.IE下input.type属性为只读;但是Firefox下input.type属性为读写. 8.IE下,可以通过showModalDialog和showModelessDialog打开模态和非模态窗口;Firefox下则不能 9.Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在 10. */ //文档兼容 HTMLDocument.prototype.__defineGetter__("all",function(){ return this.getElementsByName("*");}); HTMLFormElement.constructor.prototype.item=function(s){ return this.elements[s];}; HTMLCollection.prototype.item=function(s){ return this[s];}; //事件兼容 window.constructor.prototype.__defineGetter__("event",function(){ for(var o=arguments.callee.caller,e=null;o!=null;o=o.caller){ e=o.arguments[0]; if(e&&(e instanceof Event)) return e;} return null;}); window.constructor.prototype.attachEvent=HTMLDocument.prototype.attachEvent=HTMLElement.prototype.attachEvent=function(e,f){ this.addEventListener(e.replace(/^on/i,""),f,false);}; window.constructor.prototype.detachEvent=HTMLDocument.prototype.detachEvent=HTMLElement.prototype.detachEvent=function(e,f){ this.removeEventListener(e.replace(/^on/i,""),f,false);}; with(window.Event.constructor.prototype){ __defineGetter__("srcElement",function(){ return this.target;}); __defineSetter__("returnValue",function(b){ if(!b)this.preventDefault();}); __defineSetter__("cancelBubble",function(b){ if(b)this.stopPropagation();}); __defineGetter__("fromElement",function(){ var o=(this.type=="mouseover"&&this.relatedTarget)||(this.type=="mouseout"&&this.target)||null; if(o) while(o.nodeType!=1) o=o.parentNode; return o;}); __defineGetter__("toElement",function(){ var o=(this.type=="mouseover"&&this.target)||(this.type=="mouseout"&&this.relatedTarget)||null; if(o) while(o.nodeType!=1) o=o.parentNode; return o;}); __defineGetter__("x",function(){ return this.pageX;}); __defineGetter__("y",function(){ return this.pageY;}); __defineGetter__("offsetX",function(){ return this.layerX;}); __defineGetter__("offsetY",function(){ return this.layerY;}); } //节点操作兼容 with(window.Node.prototype){ replaceNode=function(o){ this.parentNode.replaceChild(o,this);} removeNode=function(b){ if(b) return this.parentNode.removeChild(this); var range=document.createRange(); range.selectNodeContents(this); return this.parentNode.replaceChild(range.extractContents(),this);} swapNode=function(o){ return this.parentNode.replaceChild(o.parentNode.replaceChild(this,o),this);} contains=function(o){ return o?((o==this)?true:arguments.callee(o.parentNode)):false;} } //HTML元素兼容 with(window.HTMLElement.prototype){ __defineGetter__("parentElement",function(){ return (this.parentNode==this.ownerDocument)?null:this.parentNode;}); __defineGetter__("children",function(){ var c=[]; for(var i=0,cs=this.childNodes;i<cs.length;i++){ if(cs[i].nodeType==1) c.push(cs[i]);} return c;}); __defineGetter__("canHaveChildren",function(){ return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/i.test(this.tagName);}); __defineSetter__("outerHTML",function(s){ var r=this.ownerDocument.createRange(); r.setStartBefore(this); void this.parentNode.replaceChild(r.createContextualFragment(s),this); return s;}); __defineGetter__("outerHTML",function(){ var as=this.attributes; var str="<"+this.tagName; for(var i=0,al=as.length;i<al;i++){ if(as[i].specified) str+=" "+as[i].name+"=""+as[i].value+""";} return this.canHaveChildren?str+">":str+">"+this.innerHTML+"</"+this.tagName+">";}); __defineSetter__("innerText",function(s){ return this.innerHTML=document.createTextNode(s);}); __defineGetter__("innerText",function(){ var r=this.ownerDocument.createRange(); r.selectNodeContents(this); return r.toString();}); __defineSetter__("outerText",function(s){ void this.parentNode.replaceChild(document.createTextNode(s),this); return s}); __defineGetter__("outerText",function(){ var r=this.ownerDocument.createRange(); r.selectNodeContents(this); return r.toString();}); insertAdjacentElement=function(s,o){ return (s=="beforeBegin"&&this.parentNode.insertBefore(o,this))||(s=="afterBegin"&&this.insertBefore(o,this.firstChild))||(s=="beforeEnd"&&this.appendChild(o))||(s=="afterEnd"&&((this.nextSibling)&&this.parentNode.insertBefore(o,this.nextSibling)||this.parentNode.appendChild(o)))||null;} insertAdjacentHTML=function(s,h){ var r=this.ownerDocument.createRange(); r.setStartBefore(this); this.insertAdjacentElement(s,r.createContextualFragment(h));} insertAdjacentText=function(s,t){ this.insertAdjacentElement(s,document.createTextNode(t));} } //XMLDOM兼容 window.ActiveXObject=function(s){ switch(s){ case "XMLDom": document.implementation.createDocument.call(this,"text/xml","", null); //domDoc = document.implementation.createDocument("text/xml","", null); break; } } XMLDocument.prototype.LoadXML=function(s){ for(var i=0,cs=this.childNodes,cl=childNodes.length;i<cl;i++) this.removeChild(cs[i]); this.appendChild(this.importNode((new DOMParser()).parseFromString(s,"text/xml").documentElement,true));} XMLDocument.prototype.selectSingleNode=Element.prototype.selectSingleNode=function(s){ return this.selectNodes(s)[0];} XMLDocument.prototype.selectNodes=Element.prototype.selectNodes=function(s){ var rt=[]; for(var i=0,rs=this.evaluate(s,this,this.createNSResolver(this.ownerDocument==null?this.documentElement:this.ownerDocument.documentElement),XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),sl=rs.snapshotLength;i<sl;i++) rt.push(rs.snapshotItem(i)); return rt;} XMLDocument.prototype.__proto__.__defineGetter__("xml",function(){ try{ return new XMLSerializer().serializeToString(this);} catch(e){ return document.createElement("div").appendChild(this.cloneNode(true)).innerHTML;}}); Element.prototype.__proto__.__defineGetter__("xml",function(){ try{ return new XMLSerializer().serializeToString(this);} catch(e){ return document.createElement("div").appendChild(this.cloneNode(true)).innerHTML;}}); XMLDocument.prototype.__proto__.__defineGetter__("text",function(){ return this.firstChild.textContent;}); Element.prototype.__proto__.__defineGetter__("text",function(){ return this.textContent;}); Element.prototype.__proto__.__defineSetter__("text",function(s){ return this.textContent=s;}); }

  推荐阅读

  使用jquery给input和textarea设定ie中的focus

今天在做我们的表单提交部分的时候,遇到了这个问题,于是,用传说中的jquery就可以解决了. 这里主要说的是在IE下的focus的问题,因为在firefox中是支持 复制代码 代码如下:input:focus textarea:focus 在IE下:focus是>>>详细阅读


本文标题:javascript firefox兼容ie的dom方法脚本

地址:http://www.17bianji.com/kaifa2/JS/29679.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)