2011-09-14 3 views
0

페이스 북 앱을 개발 중이며 jQuery를 코드에 추가 한 이후로 이상한 동작이 발생했습니다.jquery 버튼이 2 개의 권한 대화 상자를 엽니 다.

이 잘 작동 내 원래의 코드는 다음과 같습니다

button.onclick = function() { 
    FB.login(function(response) { 
     if(response.authResponse) { 
      FB.api('/me', function(info) { 
       login(response, info); 
      }); 
     } 
     else { 

     } 
    }, {scope:'publish_stream'}); 
} 

그럼 내가 jQuery를 추가하는 대신 클릭 이벤트를 사용 : 내가 버튼을 클릭하면

$("#button").click(function() { 
    FB.login(function(response) { 
     if(response.authResponse) { 
      FB.api('/me', function(info) { 
       login(response, info); 
      }); 
     } 
     else { 

     } 
    }, {scope:'publish_stream'}); 
}); 

그리고 지금이 권한 대화 상자가 열립니다. 왜 이런거야?

+0

감각 this'가 변경'의 맥락 것이다 만들 것이다 유일한 것은 - JQuery와 콜백'this' 이제 요소'#의 button'입니다 내부를, 반면에 이전 그것은 다른 대상이었습니다. – Tejs

+0

첫 번째 코드를 삭제 했습니까? 페이지에 id #button이있는 요소가 하나만 있다고 확신합니까? – reporter

+0

아마 당신은 당신의 코드 어딘가에 명시 적으로 click 이벤트를 호출하고있다. – mjs

답변

0

아마도이 코드는 두 번 실행됩니다. console.log() 또는 경고로 확인할 수 있습니다. jQuery는 prevoius 처리기를 제거하지 않는 addEventListener (또는 IE에서 attachHandler)를 사용하지만 "button.onclick = ..."은 이전 onlick 이벤트 핸들러를 덮어 쓰기 때문에 원래 코드가 작동했습니다.

그렇다면, 시도

$('#button').unbind('click').click(function() {....}); 
+0

이것은 FB.getLoginStatus (updateButton);과 FB.Event.subscribe ('auth.statusChange', updateButton); 사용자 상태를 확인합니다. 이 문제를 어떻게 해결할 수 있습니까? –

관련 문제