IE 와 fireforx 에서 Dhtml 의 차이 점

4454 단어 IEfirefoxDhtml
1.DOM 의 인 터 페 이 스 는 기본적으로 일치 하지만 테스트 를 통 해 mozilla 아래 의 DOM 이 더 표준 적 인 것 으로 나 타 났 다.비록 몇 가지 방법 이 있 더 라 도 IE 아래 는 작은 차이 가 있 지만 중요 하지 않다.2.사건 모델 에 있어 서 이 방면 의 차 이 는 비교적 크다.mozilla 아래 의 e.target 은 ie 아래 의 event.srcElement 에 해당 하지만 세부 적 으로 차이 가 있다.후 자 는 html element 를 되 돌려 주 고 e.target 은 노드 를 되 돌려 줍 니 다.즉,텍스트 노드 를 포함 하고 방법 은 이렇게 var trg=e.target 을 할 수 있 습 니 다.while(trg.nodeType!=1)trg=trg.parentNode; mozilla 아래 의 e.which 는 ie 아래 의 event.keyCode 와 상당히 대응 하 는 것 은 e.layerX,e.layerY,e.pageX,e.pageY 도 있 습 니 다.볼 수 있 습 니 다.http://fason.nease.net/mozilla/dom/ 이벤트 부분 이벤트 바 인 딩 에 mozilla 는 addEventListener,removeEventListener,ie 의 attachEvent,detatchEvent 3.대상 참조 에 직접 document.getElement ById 를 사용 하면 됩 니 다.ie4 를 호 환 하려 면,게다가 document.all 은 form element 의 인용 이 표준 적 이 어야 한다 고 판단 할 수 있 습 니 다.var oInput=document.formName.element s["input 1"]4.XML 의 응용 은 차이 가 더 큽 니 다.IE 아래 는 activex 를 통 해 만 들 어 졌 기 때 문 입 니 다.mozilla 는 이미 이러한 대상 이 있 습 니 다(dom 2 지원 이 필요 합 니 다)Xmldomdocument:var doc=document.inplementation.createDocument(",").null)xmlhttp:var req=new XML HttpRequest()5.innerText 는 mozilla 에서 지원 하지 않 습 니 다.range 기술 로 text 6.insert AdjacentHTML 을 얻 는 것 이 좋 은 방법 입 니 다.mozilla 는 DOM 방법 insert Before 로 7 을 호 환 할 수 있 습 니 다.예 를 들 어 Array,Date 의 일부 방법 ie 와 mozilla 도 작은 차이 가 있 습 니 다.구체 적 으로 언급 하지 않 습 니 다.두 가지 예 를 들 었 습 니 다:1.ID 를 통 해 대상 function getObjectById(id){if(typeof(id)!="string" || id == "") return null; if (document.all) return document.all(id); if (document.getElementById) return document.getElementById(id); try {return eval(id);} catch(e){ return null;} } 2.이벤트 추가 처리 함수 if(document.attachEvent)window.attachEvent("onresize",function(){reinsert();});else window.addEventListener('resize', function(){reinsert();}, false); IE 에 서 는 onclick 이 고 fireforx NS 에 서 는 click 이 스 크 립 트 로 document.formName.action="..."을 제출 합 니 다.document.formName.submit(); 모 질 라 에 서 는 XML 을 처리 하 는 방법 을 사용 할 수 없 을 것 같 습 니 다
 
var FCKXml = function()
{}
FCKXml.prototype.GetHttpRequest = function()
{
if ( window.XMLHttpRequest )// Gecko
return new XMLHttpRequest() ;
else if ( window.ActiveXObject )// IE
return new ActiveXObject("MsXml2.XmlHttp") ;
}
FCKXml.prototype.LoadUrl = function( urlToCall, asyncFunctionPointer )
{
var oFCKXml = this ;
var bAsync = ( 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 && oXmlHttp.status == 200 )
this.DOMDocument = oXmlHttp.responseXML ;
else
throw( 'Error loading "' + 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.prototype.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 ;
}
}

좋은 웹페이지 즐겨찾기