2011-08-14 8 views
8

사용자가보고있는 페이지를 떠나지 않고도 트위터로 인증 할 수있는 팝업 창을 열려고합니다. 이 기술은 특히 Disqus 주석 처리 응용 프로그램에서 웹에서 사용되는 것을 보았습니다. 그러나 두 가지 결과 만 얻을 수 있습니다. '팝업 창이 차단되었습니다.'라는 메시지 또는 아무 것도 발생하지 않습니다.팝업 창이 아약스 성공 처리기에서 차단되었습니다.

나는 herehere으로 설명 된 접근법을 사용해 보았습니다. 이 문제를 어떻게 해결할 수 있습니까? 문제가 ... 다음과 같은 분야에서 windowSizeArray는 하나의 요소가 포함 1. 거짓말을 할 수

var windowSizeArray = [ "width=200,height=200", 
          "width=300,height=400,scrollbars=yes" ]; 
var url = $('.twitter_popup').attr("href"); 
var windowName = $('.twitter_popup').attr("name"); 
var windowSize = windowSizeArray[$('.twitter_popup').attr("rel")]; 
window.open(url, windowName, windowSize); 
+0

코드를 게시 할 수 있습니까? – ShankarSangoli

+0

팝업 보안 모델은 사용자 이벤트에 의해 트리거되는 팝업 만 허용하는 것입니다. 클릭 이벤트. 당신이 그 일을하고 있는지 확인하기 위해 더 많은 상황을 공유 할 수 있습니까? –

답변

20

브라우저의 팝업 차단기가 팝업을 차단합니다. 코드는 스크립트 실행 컨텍스트에서 실행 중입니다.

예. 앵커에서 새 창을 열면 팝업 차단기가 차단하지 않습니다.하지만 setTimeout을 사용하여 새 창을 열려고하면 팝업 차단기가이를 차단합니다. 시간 제한에 도달하면 컨텍스트가 이제 사용자 작업 대신 스크립트 실행 컨텍스트 인 이 되었기 때문입니다. 이것은 ajax 콜백 핸들러에서 새 창을 열려고 할 때와 같은 동작입니다.

나는 이와 비슷한 상황에 처해 있다고 생각합니다. example

어떤 이유로 자체가 다음 동기 아약스 호출하여 그것을 달성 할 수 아약스 성공 처리기에서 팝업을 열려면 라이브

. 팝업이 차단되지 않습니다.

+0

이것이 문제였습니다. 아약스 호출의 '성공'동작에서 창을 여는 중입니다. 창을 열고 대신 창 내에서 아약스를 실행하여 문제를 해결했습니다. 무리 감사! – providence

+1

실행 컨텍스트를 언급하기 위해 +1 – Mrchief

+0

setTimeout을 사용하여 팝업이 최신 크롬이나 파이어 폭스에서 차단되지 않았습니다. – Orbit

0

: 같은

내 코드는 현재 보인다. 2. 클래스 이름이 선택자로 사용되기 때문에 코드 $ ('. twitter_popup'). attr ("rel")은 expectd보다 약간의 diff 결과를 줄 수 있습니다.

+0

windowSizeArray는 실제로 2 개의 요소를 포함하고 있습니다. – Ryan

관련 문제