본문 바로가기

프로그래밍/Etc.

IE 상에서 .Reomve() javascript 대체 문구 및 IE 브라우져 여부 확인

안녕하세요.

 

Layer Popup을 사용할때 Layer popup에서 Layer를 하나 더 띄우고 창닫기를 누를때 .Remove()를 사용해서 삭제가 가능합니다. 단 크롬이나 파이어 폭스에서만 이 로직이 가능합니다. IE에서 사용할경우 Script에러를 뿜어냅니다. 이후 로직이 동작하지 않고 화면이 빈 화면에서 멈춰버리죠. 그래서 IE상에서 이를 해결할 방법을 이야기 해보겠습니다.

 

 

 

Script에서 IE 브라우저 확인 해서 분기 나누기

 

IF(Request.Broswer.Broswer.Equal("INTERNETEXPLORER")) // 사용 안하는게 좋은 구문..

 

위처럼 IE여부를 찾을수 있습니다. 다만 위의 로직은 특정 OS나 특정 브라우저 버전에서 MOZILLA로 인식되는 현상이 있습니다.

 

그래서 아래의 방식을 사용해서 IE 브라우저 여부를 확인합니다.

 

IE 10 이하버전 체크

IF(agent.indexOf("msie") != -1){}

 

IE 10 이상 버전 체크

IF(agent.indexOf("rv:1") != -1){}

 

IE 여부 체크

IF(agent.indexOf("msie") != -1 || agent.indexOf("rv:1") != -1 ){}

ELSE {

// Chrome , FireFox 등 

}

 

이 두 구문을 이용해서 IE 브라우저 여부를 체크 합니다.

 

 

 

크로스 브라우저 지원하는 Remove() Script 의 대체를 이용

 

기존 로직

var test  = parent.document.getElementById("test");

     test.remove(); 


.remove() 가 IE에서 동작을 하지 않기 때문에 아래의 대체 로직 사용

var test  = parent.document.getElementById("test");

     test.parentNode.removeChild(test);

 

생각보다 간단한 로직입니다. 다만 생각보다 검색 자료가 많이 부족해서 이와같이 올립니다.

감사합니다.