ホームページ >ウェブフロントエンド >jsチュートリアル >IE での Dhtml と firefox_javascript スキルのいくつかの違いの概要

IE での Dhtml と firefox_javascript スキルのいくつかの違いの概要

WBOY
WBOYオリジナル
2016-05-16 18:40:311238ブラウズ

1. DOM 上のインターフェイスは基本的に同じですが、テストの結果、メソッドが同じであっても、IE では多少の違いがあるものの、mozilla での DOM の方が標準であることがわかりました。 matter
2. イベントモデルに関しては、この点の違いは比較的大きいです。mozilla の
e.target は ie のevent.srcElement と同等ですが、後者は HTML を返します。要素
の間、e.target はノードを返します。つまり、テキスト ノードを含むメソッドは次のようになります。
var trg = e.target;
while(trg.nodeType!=1) trg=trg.parentNode;
e.mozilla では ie と同じです。event.keyCode は、e.layerX、e.layerY、e.pageX、e.pageY...http://fason.nease.net/mozilla/dom/event 部分をチェックアウトできます。
イベントは、IE のattachEvent、detatchEvent に対応する addEventListener、removeEventListener を使用して Mozilla にバインドされます。
3. オブジェクトの場合。 IE4 と互換性を持たせたい場合は、document .all を追加して、
form 要素の参照をより標準にする必要があることを決定します。 var oInput = document.formName.elements["input1" ]
4. XML のアプリケーションの違いはさらに大きく、XML は IE での activex を通じて作成され、mozilla にはこれらのオブジェクトが既に存在します (dom2 サポートが必要です)。
Xmldomdocument: var doc = document.inplementation.createDocument( "","",null)
xmlhttp: var req = new XMLHttpRequest()
5 .innerText は Mozilla ではサポートされていません。そのテキストを取得するには、いくつかの範囲テクニックを使用する必要があります。
6 Mozilla は互換性を保つために DOM メソッド insertBefore を使用できます。
7. Array や Date の一部のメソッドなど、ie と mozilla の間には若干の違いがあります。詳しく言及される。 。 。
2 つの例を記述します。
1. ID によってオブジェクトを取得する場合
function getObjectById(id)
{
if (typeof(id) != "string" || id == "" ) null を返します。
if (document.all) return document.all(id);
if (document.getElementById) return document.getElementById(id); catch(e){ return null;}
}
2. イベントに処理関数をアタッチします
if(document.attachEvent)
window.attachEvent("onresize", function(){reinsert ();});
else
window.addEventListener('resize', function(){reinsert();}, false);
IE では onclick ですが、Firefox NS では onclick であることに注意してください。 click
Submit with script
document.formName.action = "...";
document.formName.submit();
XML を処理するメソッドは使用できないようですmozilla の下




コードをコピーします

コードは次のとおりです。 var FCKXml = function() {}
FCKXml.prototype.GetHttpRequest = function()
{
if ( window.XMLHttpRequest )// Gecko
return new XMLHttpRequest()
else if ( window.ActiveXObject ) )// IE
return new ActiveXObject("MsXml2. typeof(asyncFunctionPointer) == 'function' ) ;
var oXmlHttp = this.GetHttpRequest() ;
oXmlHttp.open( "GET", urlToCall, bAsync ) ;
if ( bAsync )
{
oXmlHttp.onreadystatechange = function()
{
if ( oXmlHttp.readyState == 4 )
{
oFCKXml.DOMDocument = oXmlHttp.responseXML ;
asyncFunctionPointer( oFCKXml ) ;
}
}
}
oXmlHttp.send( null ) ;
if ( ! bAsync && oXmlHttp.status == 200 )
this.DOMDocument = oXmlHttp.responseXML ;
else
throw( 'エラー読み込み "' urlToCall '"' )
FCKXml.prototype.SelectNodes = function( xpath, contextNode )
{
if ( document .all )// IE
{
if ( contextNode )
return contextNode.selectNodes( xpath ) ;
else
return this.DOMDocument.selectNodes( xpath ) ;
}
else// Gecko
{
var aNodeArray = new Array()
var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
if ( xPathResult )
var oNode = xPathResult.iterateNext () ;
while( oNode )
{
aNodeArray[aNodeArray.length] = oNode;
oNode = xPathResult.iterateNext();
return aNodeArray ;
}
}
FCKXml.SelectSingleNode = function( xpath, contextNode )
{
if ( document.all ) // IE
{
if ( contextNode )
return contextNode.selectSingleNode( xpath ) ;
else
return this.DOMDocument.selectSingleNode( xpath ) ;
}
else// Gecko
{
var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
if ( xPathResult && xPathResult.singleNodeValue )
return xPathResult.singleNodeValue;
else
return null
}
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。