JS IE 와 FF 호환성 문제 집계

6009 단어 JSIEFF 호환성
1.document.form.item 문제 기 존 문제:기 존 코드 에는 document.formName.item(itemName)과 같은 문구 가 많이 존재 합 니 다.MF 에서 해결 방법 을 실행 할 수 없습니다.document.formName.elements["element Name"]다른 참조 2.집합 대상 문제 가 있 습 니 다.기 존 코드 중 많은 집합 대상 을 사용 할 때(),IE 를 받 아들 일 수 있 습 니 다.MF 안 돼.해결 방법:[]을 아래 표 연산 으로 바 꿉 니 다.예 를 들 어 document.forms("formName")를 document.forms["formName"]로 바 꿉 니 다.또한:document.getElementsByName("input Name")(1)을 document.getElementsByName("input Name")[1]로 변경 합 니 다.3.window.event 기 존 문제:window.event 를 사용 하여 MF 에서 해결 방법 을 실행 할 수 없습니다.MF 의 이 벤트 는 이벤트 가 발생 하 는 현장에서 만 사용 할 수 있 습 니 다.이 문 제 는 해결 할 수 없습니다.이렇게 변경 할 수 있 습 니 다:원래 코드(IE 에서 실행 가능):...function gotoSubmit(){..alert(window.event);/use window.event...}새 코드(IE 와 MF 에서 실행 가능):...function goto Submit(evt){evt=evt?evt : (window.event ? window.event : null); ... alert(evt); // use evt...}외 에 새 코드 의 첫 줄 이 바 뀌 지 않 으 면 오래된 코드 와 같 으 면(즉,goto Submit 호출 이 인자 에 주지 않 았 음)IE 에서 만 실 행 될 수 있 지만 오류 가 발생 하지 않 습 니 다.그래서 이런 방안 의 tpl 부분 은 여전히 오래된 코드 와 호 환 된다.4.HTML 대상 의 id 를 대상 이름 으로 하 는 문제 가 있 습 니 다.IE 에서 HTML 대상 의 ID 는 document 의 부하 대상 변수 이름 으로 직접 사용 할 수 있 습 니 다.MF 에 서 는 안 돼.해결 방법:idName 대신 getElement ById("idName")를 대상 변수 로 사용 합 니 다.5.idName 문자열 로 대상 을 가 져 오 는 문제 가 있 습 니 다.IE 에 서 는 eval(idName)을 이용 하여 id 를 idName 의 HTML 대상 으로 가 져 올 수 있 으 며 MF 에 서 는 안 됩 니 다.해결 방법:eval(idName)대신 getElement ById(idName)를 사용 합 니 다.6.변수 명 이 HTML 대상 id 와 같은 문제 가 있 습 니 다.MF 에 서 는 대상 id 가 HTML 대상 의 이름 이 아니 기 때문에 HTML 대상 id 와 같은 변수 명 을 사용 할 수 있 습 니 다.IE 에 서 는 사용 할 수 없습니다.해결 방법:변 수 를 설명 할 때 일률적으로 var 를 추가 하여 잘못된 의 미 를 피하 고 IE 에서 도 정상적으로 작 동 할 수 있 습 니 다.또한 HTML 대상 id 와 같은 변수 이름 을 가 져 오지 않 고 오 류 를 줄 이 는 것 이 좋 습 니 다.기타:문제 4 7 참조.event.x 와 event.y 문제 기 존 문제:IE 에서 event 대상 은 x,y 속성,MF 에 없습니다.해결 방법:MF 에서 event.x 와 같은 효 과 를 가 진 것 은 event.pageX 입 니 다.이벤트.pageX IE 에는 없습니다.그러므로 이벤트.clientX 를 이벤트.x 대신 사용 합 니 다.IE 에 도 이 변수 가 있 습 니 다.event.clientX 와 event.pageX 는 미묘 한 차이 가 있 지만 대부분 같은 효 과 를 가진다.똑 같 으 려 면 mX=event.x?event.x : event.pageX; 그리고 이벤트.x 를 mX 로 대체 합 니 다.다른:이벤트.layerX 는 IE 와 MF 에 있 습 니 다.구체 적 인 의미 의 차이 가 있 는 지 없 는 지 시험 하지 않 았 습 니 다.8.frame 기 존 문제:IE 에서 window.test Frame 로 이 frame 을 얻 을 수 있 습 니 다.mf 에 서 는 해결 방법 이 없습니다.frame 의 사용 에 있어 mf 와 ie 의 가장 큰 차이 점 은 frame 태그 에 다음 과 같은 속성 을 적 었 다 면:ie 는 id 나 name 을 통 해 frame 에 대응 하 는 window 대상 을 방문 할 수 있 고 mf 는 name 을 통 해 이 frame 에 대응 하 는 window 대상 을 방문 할 수 있 습 니 다.예 를 들 어 상기 frame 대상 이 있다 면탭 은 최상 위 window 에 있 는 htm 에 적 혀 있 습 니 다.i:window.top.frameId 나 window.top.frameName 을 통 해 이 window 대상 mf 에 접근 할 수 있 습 니 다.이렇게 window.top.frameName 을 통 해 이 window 대상 에 접근 할 수 있 습 니 다.또한,mf 와 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.mf 에서 자신 이 정의 하 는 속성 은 getAttribute()를 가 져 와 야 합 니 다.mf 에 parentElement parement.children 이 없고 parentNode parentNode.childNodes childNodes 의 아래 표 시 된 의 미 는 IE 와 MF 에서 다 릅 니 다.MF 는 DOM 규범 을 사용 하고 childNodes 에 빈 텍스트 노드 를 삽입 합 니 다.일반적으로 node.getElement sByTagName()을 통 해 이 문 제 를 회피 할 수 있 습 니 다.html 에서 노드 가 부족 할 때 IE 와 MF 는 parentNode 에 대한 설명 이 다 릅 니 다.예 를 들 어
MF 에서 input.parentNode 의 값 은 form 이 고 IE 에서 input.parentNode 의 값 은 빈 노드 MF 에서 노드 는 removeNode 방법 이 없습니다.다음 방법 을 사용 해 야 합 니 다 node.parentNode.removeChild(node)11.const 문제 기 존 문제:IE 에 서 는 const 키 워드 를 사용 할 수 없습니다.const constVar=32;IE 에서 이것 은 문법 오류 입 니 다.해결 방법:const 를 사용 하지 않 고 var 로 대체 합 니 다.12.body 대상 MF 의 body 는 body 태그 가 브 라 우 저 에 완전히 읽 히 기 전에 존재 하 며,IE 는 body 가 완전히 읽 힌 후에 만 존재 합 니 다.13.url encoding 은 js 에서 url 을 쓰 면 바로 쓰기&쓰 지 마 십시오&예 를 들 어 var url='xx.jsp?object Name=xx&object Event=xxx';frm.action=url 은 url 이 정상적으로 표시 되 지 않 아 서버 에 올 바 르 게 전송 되 지 않 을 가능성 이 높 습 니 다.일반적으로 서버 에서 잘못된 파 라 메 터 를 찾 을 수 없습니다.물론 tpl 에서 예외 라면 tpl 에서 xml 규범 에 부합 되 기 때문에 요구&쓰기&일반 MF 는 js 중의&14.nodeName 과 tagName 문 제 를 식별 할 수 없습니다.현재 문제:MF 에서 모든 노드 는 nodeName 값 이 있 습 니 다.하지만 textNode 에는 tagName 값 이 없습니다.IE 에서 nodeName 의 사용 에 문제 가 있 는 것 같 습 니 다.해결 방법:tagName 을 사용 하지만 비어 있 는 지 확인 해 야 합 니 다.15.요소 속성 IE 에서 input.type 속성 은 읽 기 전용 이지 만 MF 에서 16.document.getElementsByName()과 document.all[name]의 문 제 를 수정 할 수 있 습 니 다.IE 에서 getElementsByName(),document.all[name]은 div 요 소 를 가 져 올 수 없습니다.17.DOM 데이터 섬의 문 제 는 현재 문제 가 있 습 니 다.IE 에서라벨 은 특별한 의 미 를 가지 고 XML DOM 을 포함 할 수 있 으 며 HTML 구성 요소 와 의 데이터 연결 을 실현 할 수 있 습 니 다.MF 에서은 알 수 없 는 태그 일 뿐 입 니 다.또한 IE 에 있어은 실제 적 으로 여기 가 ActiveX 대상 임 을 의미 하지만 HTML 자체 의 DOM 트 리 아래 에 걸 려 있 습 니 다.따라서 DOM 트 리 를 옮 겨 다 니 는 데 심각 한 영향 을 미 칠 수 있 습 니 다.해결 방법:IE 의 데이터 바 인 딩 체 제 는 JS 로 시 뮬 레이 션 할 수 있 지만 너무 번 거 로 우 므 로 데이터 바 인 딩 체 제 를 사용 하지 않 거나 이러한 시 뮬 레이 션 을 실현 하 는 라 이브 러 리 를 찾 는 것 을 권장 합 니 다.우 리 는 DOM 의 호 환 을 어떻게 실현 하 는 지 만 토론 합 니 다.MF 에 서 는 이미 알 고 있 는 HTML 태그 든 XML 규범 에 부합 되 는 다른 태그 든모두 통 일 된 DOM 트 리 로 처리 되 기 때문에 MF 는 사실상 DOM 데이터 섬 을 사용 할 수 있 습 니 다.그러나 IE 와 작은 차이 점 은 IE 에서은 DOM document 이 고 MF 는 DOM node 일 뿐 이 차 이 는 보통 문제 가 되 지 않 습 니 다.그러나 작은 디 테 일 한 가지 가 있 습 니 다.HTML 을 겸용 하기 위해 상당히 자유로운 문법 입 니 다.MF 는 약자 의 빈 표 시 를 식별 할 수 없습니다.예 를 들 어xxxx입 니 다.그 중에서는 약자 형식 으로 MF 를 식별 할 수 없 으 므 로>로 써 야 합 니 다.하지만 XHTML 을 사용 하면이런 문제 가 없 을 수도 있 습 니 다.하지만 저 는 아직 해 본 적 이 없습니다.IE 에서이 HTML 을 방해 하 는 DOM 구조 문제 에 대해 서 는 제 가 지금 처리 한 후에 HTML 의 DOM 에서 삭제 하 는 방법 입 니 다.아직 더 좋 은 해 가 있 는 지 모 르 겠 습 니 다.

좋은 웹페이지 즐겨찾기