IE에서 javascript의 window.open(...)으로 새창 열면 [object]라고 뜰 때

2014. 5. 1. 15:17 from Dev/javascript

옛날에 누가 작업해 놓으신 페이지를 건드리다가.. 아래와 같이 수정을 했는데 생긴 문제입니다.

<a href="javascript:window.open('/home/test.php');">test</a>

위와 같이 자바스크립트를 이용해서 링크를 클릭하면 새 창이 열리도록 코드를 바꾸었는데, 크롬이나 파이어폭스에서는 별 문제 없이 열리는데, 유독 IE에서는 새 창이 열리고 부모 창은 덜렁 [object]라고만 떠 버리는 황당한 상황이 발생하였습니다. 

'이게 뭥미' 하고 이것 저것 하다 보니.. 

새 창을 열고 돌아오는 창 객체 때문에 발생하는 문제였습니다. 

보통 

myWin = window.open(url) 

이런 식으로 하고 처리하는데.. 위처럼 간단하게 인라인으로 처리한다고 해놓으니 리턴값이 부모창에 표시되는 문제였더군요.

이렇게 a tag안에 javascript를 넣어주면 스크립트 실행값이 평가되어 남게됩니다. 하지만, 크롬이나 파이어폭스에서는 [object]로 돌아오면 표시를 안해주지만, IE에서는 이를 표시해주도록 되어 있는 것 같습니다. 

그래서 뒤에 void(0)을 붙여주니 정상적으로 원래 페이지에 남아 있게 되네요.

<a href="javascript:window.open('/home/test.php'); void(0)">test</a>


하여튼 IE의 세계는 예측불허라.. 꼭 롹인을 해보아야 하게 만드네요.

다른 좋은 방법이 있으면 알려주십시오. ^^


Posted by banasun :