ホームページ > ウェブフロントエンド > jsチュートリアル > javascript Firefox 互換 ie dom メソッド script_javascript スキル

javascript Firefox 互換 ie dom メソッド script_javascript スキル

WBOY
リリース: 2016-05-16 19:04:17
オリジナル
900 人が閲覧しました

if(!document.all){
//zzcv の ff ie 互換スクリプト
/* スクリプトによって解決されない問題と解決策:

2. IE では、() または [ を使用できます。 ] コレクション クラス オブジェクトを取得します。Firefox では、[] を使用してコレクション クラス オブジェクトを取得します。
3.通常の属性を取得する場合は、getAttribute() を使用してカスタム属性を取得することもできます。
解決策: getAttribute() を使用してカスタム属性を取得することのみが可能です。 🎜>4. IE では、HTML オブジェクトの ID をドキュメントの下位オブジェクトの変数名として直接使用できますが、Firefox では、HTML オブジェクト ID と同じ変数名を使用できません。は使用できますが、IE では使用できません。
解決策: document.idName の代わりに document.getElementById("idName") を使用します。エラーを減らすために、変数を宣言するときは常に var を追加してください。
6. input.type 属性は IE では読み取り専用ですが、input.type 属性は Firefox では読み取り/書き込み可能です。
8. IE では、showModalDialog および showModelessDialog を通じて開くことができます。 Firefox では、
9. Firefox の本体は、ブラウザによって body タグが完全に読み取られる前に存在することはできません。一方、IE の本体は、ブラウザによって body タグが完全に読み取られた後に存在する必要があります。
10.
//ドキュメント互換の
HTMLDocument.prototype.__defineGetter__("all",function(){
return this.getElementsByName("*");});

HTMLFormElement。 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.personalTarget)||(this.type=="mouseout"&&this.target)||null;
if(o)
while( o. nodeType!=1)
o=o.parentNode; type=="mouseover"&&this.target)||(this.type=="mouseout"&&this.popularTarget)||null;
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();
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 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=" for(var i=0,al=as. length;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);
休憩;
}
}

XMLDocument.prototype.LoadXML=function(s){
for(var i=0,cs=this.childNodes,cl=childNodes.length;i this.removeChild(cs[i]);
this.appendChild(this.importNode((new DOMParser()).parseFromString(s,"text/xml").documentElement,true));}

XMLDocument.prototype.selectSingleNode=要素。 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 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;});

}

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート