2013-03-02 2 views
0
내 사이트에 창을 폐쇄 할 수 있는지 여부를 내가 확인하려고

:IE : 설정 해제 window.opener

if (window.opener && window.opener.closed === false) { 

사용자가 window.opener을 설정하는 또 다른 창을 통해 내 사이트에 도달하는 것이 가능하다. 사용자가 window.opener = null을 사용하여 처음에 내 사이트에 도달하면 window.opener을 '재설정'할 수 있습니다. 그러나 이것은 IE에서 작동하지 않습니다 (다음 페이지에서 window.opener이 복원 됨).

IE에서 window.opener 구문을 "재설정"할 수 있습니까? 아니면 다른 크로스 브라우저 솔루션을 사용하여 일반적으로 내 문제를 해결할 수 있습니까?

답변

1

완전히 유사한 것은 아니지만 제 목적을 달성 할 수있는 해결책을 발견했습니다. 오프너가 같은 도메인에있는 경우에만 창을 닫고 싶습니다.

if (window.opener.location.hostname.indexOf(window.location.hostname) > -1) { 

그러나, IE는 오프너가 다른 호스트에있는 경우, 당신은 window.opener.location에 액세스 할 수 없습니다. 이것은 실제로 꽤 잘 작동합니다 :

try { 
    //snippet above 
} 
catch (error) { /* no action needed; assume different host */ } 
+0

위와 같은 if (window.opener! == window)를 리팩터링하여 동일한 참조인지 확인해야합니다. –

+0

@MauvisLedford 사용자가 내 도메인에서 새 창을 열면 'window.opener'는 새 창에서'window'가 아니지만 닫으려고합니다. 사용자가 * 다른 도메인에서 내 창을 여는 경우 불일치하지만 ** 닫히지 않을 ** 것입니다. 나는 당신의 제안이 잘못되었다고 생각합니다. –

+0

Touche. 'if (window.opener! == null && window.opener! == window)' –