2012-05-22 3 views
2

전자 상거래 사이트의 고객에게 Paypal 웹 사이트를 통해 지불하라고 지시하고 싶습니다. 고객이 현재 웹 페이지의 상태를 잃지 않도록 새 탭/창에서 지불을하고 싶습니다.팝업으로 차단하지 않고 창을 열고 닫는 방법?

페이팔 창을 차단하지 않고 열려면 target = "_ blank"와 함께 앵커를 사용하고 있습니다. 사실을 제외하고는 완벽하게 작동하고 있는데, 을 통해 열지 않은 창에 대해서는 window.close()이 작동하지 않으므로 Paypal 지불이 완료된 후에 닫을 수 없습니다.

어떻게하면 팝업으로 차단되지 않고 나중에 JS로 닫을 수 있습니까?

+0

http://stackoverflow.com/questions/888964/javascript-window-open-is-blocked-by-ie-popup -blocker 및 http://stackoverflow.com/questions/9616150/window-open-getting-blocked-in-some-browsers 가능한 중복 – shareef

+0

콜백 URL에 상태 정보를 넣으십시오. 여러 창 작업 과정을 만들지 마십시오. – Quentin

+0

http://stackoverflow.com/questions/7139103/open-page-in-new-window-without-popup-blocking 연구가 없다 .. 중복 질문 가능 – yajay

답변

15

페이팔 창을 차단하지 않고 열려면 target = "_ blank"와 함께 앵커를 사용하고 있습니다. 하나 개의 옵션이지만 오래 사용하면 사용자가 생성 한 이벤트 (같은 click)에 대한 핸들러 내에서 window.open 전화로, 당신은 팝업 창을 열 수 있습니다

. 따라서 링크의 click 처리기 내에서 window.open으로 전화를 걸어야합니다. 그런 다음 닫을 수 있습니다. 최신 팝업 차단기 (지난 몇 년 동안 있었던 것)는 사용자 이벤트에 의해 트리거되지 않지만 허용되는 팝업을 차단합니다.

Live example | source :

HTML :

<p><a href="#" id="target">Click to open popup</a>; it will close automatically after five seconds.</p> 

자바 스크립트 :

(function() { 

    document.getElementById("target").onclick = function() { 
    var wnd = window.open("http://stackoverflow.com"); 
    setTimeout(function() { 
     wnd.close(); 
    }, 5000); 
    return false; 
    }; 

})(); 
+0

여기 타이머에 대한 필요성은 무엇입니까? 더 명확하게 –

+0

@VarunKumar : 위의'setTimeout'은 비동기 PayPal 지불 호출의 자리 표시 자입니다. –

+0

tq @ t-j-crowder –

관련 문제