2011-03-29 4 views
0

웹 응용 프로그램에서 사용자 지정 URL 프로토콜을 사용하여 데스크톱 응용 프로그램을 실행합니다. 예 : "fakeproto : //"는 바탕 화면에서 "fakeproto.exe"를 시작합니다. 내가 무슨 말하는지 모르겠다면이 내용을 읽어보십시오. Registering an Application to a URL ProtocolIE9의 onunload 이벤트 처리기에서 window.open이 더 이상 작동하지 않습니다.

"fakeproto.exe"가 실행되기 전에 사용자의 PC에 설치되었는지 확인하는 방법이 필요했습니다. 해킹 비트이지만 모든 주요 브라우저에서 작동하도록했습니다. IE는 가장 큰 문제를 제시하고 고유 한 구현을했습니다. 바탕 화면 'didn를한다면

window.onunload = function() 
{ 
    window.open('help.php', '_self'); 
} 

: 자바 스크립트에서, 내가 먼저 사용자 정의 URL 프로토콜로드하려고 할

:이 전에

window.open('fakeproto://', '_self'); 

을, 나는 실제로 다음으로 onUnload 이벤트 핸들러를 정의 사용자 정의 URL 프로토콜을 인식하지 못하면 IE는 현재 페이지를 떠나 "웹 페이지를 표시 할 수 없습니다"로 이동합니다. 이 이벤트에서 onunload 이벤트 핸들러는 help.php를 실행하고 대신 열 수 있습니다.

이것은 IE7에서 큰 활약을합니다. & IE8이지만 일단 IE9로 업그레이드하면 더 이상 작동하지 않습니다. help.php 대신 "웹 페이지를 표시 할 수 없습니다"로 이동합니다.

디버거를 사용하면 onunload 이벤트 처리기가 실행되고 코드가 제대로 실행되지만 어떤 이유로 window.open 호출이 작동하지 않습니다 ??? 팝업 차단기도 사용 중지하지 않았는지 확인했습니다. 불운.

누구든지 아이디어가 있습니까? 누구든지 IE9가 window.open보다 엄격하다는 말을 들었습니까? 누구든지 원래의 문제에 대한 대안을 알고 있습니까?

사실, help.php를 새 창에서 열면 작동 할 수 있습니다.

window.onunload = function() 
{ 
    window.open('help.php', '_blank'); 
} 

그러나 팝업 차단기가 사용 중지 된 경우에만 작동합니다. 이 솔루션을 사용하지 않는 것이 좋습니다.

+0

시도해 보셨습니까? – BGerrissen

+0

[BGerrissen] 예, 했었습니다. 어느 쪽도 작동하지 않습니다. –

답변

0

예, IE9는 onunload 처리기에서 탐색을 차단합니다.

+0

우연히 이것이 문서화 된 곳으로 연결되는 링크가 있습니까? 그것을 허용하는 어떤 방법? –

+0

@dream_team : 보안상의 이유로'onunload'에서의 탐색이 비활성화됩니다. 그렇지 않으면 내 사이트를 떠나려고하면 페이지를 새로 고침하여 계속 머물러있게 할 수 있습니다. –