JavaScript 의 IE 와 화 호의 호환성 주의사항 을 정리 합 니 다.

4854 단어 IE불 여우호환성
1.document.form.item 문제(1)기 존 문제:기 존 코드 에 document.formName.item("itemName")과 같은 문구 가 많이 존재 합 니 다.Firefox(불 여우)에서 실행 할 수 없습니다(2)해결 방법:document.formName.elements["element Name"](3)기타 참조 2.집합 대상 문제(1)기 존 문제:기 존 코드 의 많은 집합 대상 이 사용 할 때 사용().IE 는 받 아들 일 수 있 고 Firefox 는 받 아들 일 수 없습니다.2)해결 방법:[]을 아래 표 로 바 꾸 어 연산 한다.예 를 들 어 document.forms("formName")를 document.forms["formName"]로 바 꿉 니 다.또한:document.getElementsByName("inputName")(1)을 document.getElementsByName("inputName")[1](3)기타 3.window.event(1)기 존 문제:window.event 를 사용 하면 불 여우 브 라 우 저 에서 실행 할 수 없습니다(2)해결 방법:불 여우 이 벤트 는 이벤트 가 발생 하 는 현장에서 만 사용 할 수 있 습 니 다.이 문 제 는 해결 할 수 없습니다.이렇게 변경 할 수 있 습 니 다:원래 코드(IE 에서 실행 가능):


function gotoSubmit(){
...
alert(window.event);//use window.event
...
}
새 코드(IE 와 불 여우 에서 실행 가능):

function goto Submit(evt){
evt=evt?evt : (window.event ? window.event : null);
...
alert(evt); // use evt
.그래서 이런 방안 의 tpl 부분 은 여전히 오래된 코드 와 호 환 된다.4.HTML 대상 의 id 를 대상 이름 으로 하 는 문제(1)기 존 문 제 는 IE 에서 HTML 대상 의 ID 를 document 의 부하 대상 변수 이름 으로 직접 사용 할 수 있 습 니 다.불 여우 속 에 서 는 안 된다.2)해결 방법 은 idName 대신 getElement ById("idName")를 대상 변수 로 사용 합 니 다.5.idName 문자열 로 대상 을 가 져 오 는 문제(1)기 존 문 제 는 IE 에서 eval(idName)을 이용 하여 id 가 idName 인 HTML 대상 을 가 져 올 수 있 으 며,불 여우 에 서 는 안 됩 니 다.(2)해결 방법 은 eval(idName)대신 getElement ById(idName)를 사용 합 니 다.6.변수 명 이 특정한 HTML 대상 id 와 같은 문제(1)기 존 문 제 는 불 여우 에 있 습 니 다.대상 id 가 HTML 대상 의 이름 이 아니 기 때문에 HTML 대상 id 와 같은 변수 명,IE 에서 사용 할 수 있 습 니 다.(2)해결 방법 은 변 수 를 설명 할 때 일률적으로 var 를 추가 하여 잘못된 의 미 를 피하 고 IE 에서 도 정상적으로 작 동 할 수 있다.또한 HTML 대상 id 와 같은 변수 이름 을 가 져 오지 않 고 오 류 를 줄 이 는 것 이 좋 습 니 다.(3)기타 참조 문제 47.event.x 와 event.y 문제(1)기 존 문 제 는 IE 에서 event 대상 은 x,y 속성,불 여우 에 없습니다.(2)해결 방법 은 불 여우 에서 event.x 와 같은 효 과 를 가 진 것 은 event.pageX 이다.이벤트.pageX IE 에는 없습니다.그러므로 이벤트.clientX 를 이벤트.x 대신 사용 합 니 다.IE 에 도 이 변수 가 있 습 니 다.event.clientX 와 event.pageX 는 미묘 한 차이 가 있 지만 대부분 같은 효 과 를 가진다.똑 같 으 려 면 mX=event.x?event.x : event.pageX; 그리고 이벤트.x(3)를 mX 로 대체 합 니 다.다른 이벤트.layerX 는 IE 와 불 여우 에 모두 있 습 니 다.구체 적 인 의미 의 차이 가 있 는 지 없 는 지 는 아직 시험 되 지 않 았 습 니 다.8.frame(1)에 관 한 기 존 문 제 는 IE 에서 window.testFrame 로 이 frame 을 얻 을 수 있 습 니 다.불 여우 에 서 는 안 됩 니 다(2)해결 방법 은 frame 의 사용 에 있어 서 불 여우 와 ie 의 가장 큰 차이 점 은 frame 태그 에 다음 과 같은 속성 을 쓰 면 됩 니 다.그러면 ie 는 id 나 name 을 통 해 이 frame 에 대응 하 는 window 대상 을 방문 할 수 있 고 불 호 는 name 을 통 해 이 frame 에 대응 하 는 window 대상 을 방문 할 수 있 습 니 다.예 를 들 어 만약 에위의 frame 탭 은 최상 위 window 에 있 는 htm 에 적 혀 있 습 니 다.그러면 i:window.top.frameId 나 window.top.frameName 을 방문 하여 이 window 대상 의 불 여우 에 접근 할 수 있 습 니 다.이렇게 window.top.frameName 만 이 window 대상 에 접근 할 수 있 습 니 다.또한,불 여우 와 ie 에 서 는 window.top.document.getElement ById("frameId")를 사용 하여 frame 탭 에 접근 할 수 있 으 며,window.top.document.getElement ById("testframe").src="xx.htm"을 통 해 frame 의 내용 을 전환 할 수 있 으 며,window.top.frame Name.location="xx.htm"을 통 해 frame 과 window 에 대한 설명 을 전환 할 수 있 습 니 다.bbs 의"window 와 frame"을 참조 할 수 있 습 니 다.문장 및/test/js/testframe/디 렉 터 리 아래 테스트----adun 2004.12.09 수정 9.불 여우 에서 자신 이 정의 하 는 속성 은 getAttribute()를 가 져 와 야 합 니 다.불 여우 에 parentElement parement.children 이 없 으 며 parentNode parentNode.childNodes childNodes 의 아래 표 시 된 의 미 는 IE 와 불 여우 에 따라 DOM 규범 을 사용 하고 childNodes 에 빈 텍스트 노드 를 삽입 합 니 다.일반적으로 node.getElement sByTagName()을 통 해 이 문 제 를 회피 할 수 있 습 니 다.html 에서 노드 가 부족 할 때 IE 와 화 호 는 parentNode 에 대한 설명 이 다 릅 니 다.예 를 들 어
화 호 는 input.parentNode 의 값 이 form 이 고 IE 에서 input.parentNode 의 값 은 빈 노드 화 호 중 노드 는 removeNode 방법 이 없습니다.다음 방법 을 사용 해 야 합 니 다 node.parentNode.removeChild(node)11.const 문제(1)기 존 문제:IE 에 서 는 const 키 워드 를 사용 할 수 없습니다.const constVar=32;IE 에서 이것 은 문법 오류 입 니 다.2)해결 방법:const 를 사용 하지 않 고 var 로 대체 합 니 다.12.body 대상 불 여우 body 는 body 태그 가 브 라 우 저 에 완전히 읽 히 기 전에 존재 하 며,IE 는 body 가 완전히 읽 힌 후에 만 존재 합 니 다.13.url encoding 은 js 에서 url 을 쓰 면 직접 쓰 고 쓰 지 마 십시오&예 를 들 어 var url='xx.jsp?objectName=xx&objectEvent=xxx'; frm.action=url 은 url 이 정상적으로 표시 되 지 않 아 서버 에 올 바 르 게 전송 되 지 않 을 가능성 이 높 습 니 다.일반적으로 서버 에서 잘못된 파 라 메 터 를 찾 지 못 할 수 있 습 니 다.물론 tpl 에서 예외 라면 tpl 에서 xml 규범 에 부합 되 기 때문에 요구& 로 작성 합 니 다.일반 화 호 는 js 중의& 를 식별 할 수 없다.14.nodeName 과 tagName 문제(1)기 존 문제:불 여우 에 서 는 모든 노드 에 nodeName 값 이 있 지만 textNode 에는 tagName 값 이 없습니다.IE 에서 nodeName 의 사용 에 문제 가 있 는 것 같 습 니 다.2)해결 방법:tagName 을 사용 하지만 비어 있 는 지 확인 해 야 합 니 다.15.요소 속성 IE 에서 input.type 속성 은 읽 기 전용 이지 만,불 여우 에 서 는 16.document.getElementsByName()과 document.all[name]의 문 제 를 수정 할 수 있 습 니 다.(1)기 존 문제:IE 에서 getElementsByName(),document.all[name]은 div 요 소 를 가 져 올 수 없습니다.

좋은 웹페이지 즐겨찾기