본문 바로가기

webdesign/HTML

비표준 document.all ->getElementById

내가 가지고 있는 스크립트의 삑사리, 대부분이 이 문제인 듯.
document.all이 비표준 코드인 것은 알고 있었지만 실제로 고쳐서 써 본 적은 없는 것 같다.
제대로 알고, 고쳐쓸 수 있도록 해보자.

----------------------------------------------------------------------------------

document.all 을 안쓰는 것 많으로도 표준을 따르는 웹 페이지 디자인에 매우 큰 걸음을 내 딛는 것입니다.
단지 저 document.all 때문에 다른 안되는 홈페이지가 부지기수 입니다.
요즘에는 FireFox가 어쩔수 없이 지원해서 되긴합니다만, 그렇다고 그게 좋다는 것을 의미하지는 않습니다. FireFox 1.0 은 document.all 을 지원하긴 하지만 if 문으로 체크하면 지원하지 않는다고 표시합니다.
다음은 한국 모질라 포럼에 올라온 글입니다.

http://forums.mozilla.or.kr/viewtopic.php?t=580&highlight=document.all
-----------------
웹사이트에서 버튼이 동작 되지 않는 경우 대부분 Javascript의 객체를 MSDOM에서 사용하는 document.all을 사용하기 때문에 그렇습니다. 자바스크립트 디버거를 통해 소스를 보았을 때 document.all 이 들어 있는 경우 document.all 대신 W3C DOM의 오브젝트 판별법을 사용하도록 웹사이트 관리자에게 알려주셔야 합니다.

document.all[objectID] -> document.getElementById("objectID")

혹시 거기에서 MS IE4 때문에 getElementById를 쓸 수 없다고 하면 getObject()를 아래처럼 정의한 후에 쓸 수 있다고 알려 주십시오.

function getObject(objectId) {
// checkW3C DOM, then MSIE 4, then NN 4.
//
if(document.getElementById && document.getElementById(objectId)) {
return document.getElementById(objectId);
}
else if (document.all && document.all(objectId)) {
return document.all(objectId);
}
else if (document.layers && document.layers[objectId]) {
return document.layers[objectId];
} else {
return false;
}
}

즉, 다음처럼 하면 됩니다.

getObject('sendbn').style.visibility="hidden";

getObject는 http://www.orient-express.com/js/layers.inc 에 있습니다.

혹은 다음에 있는 'x library'를 쓰는 것도 좋은 방법입니다.
http://www.cross-browser.com

 

원본출처 - http://okjsp.pe.kr/bbs?act=VIEW&seq=51218&bbs=bbs4&keyfield=content&keyword=&pg=0