2012-09-05 2 views
0

다른 날에이 문제를 알기 전까지는 완벽하게 정상적으로 작동하는 스크립트를 작성했습니다. FB와 같은 버튼은 실제 페이지에 표시되며 정상적으로 작동합니다 ... 또한 다른 공유 서비스가있는 팝업을 보여주는 페이지에 공유 버튼이 있습니다 ...이 팝업에서도 버튼과 같은 fb를 볼 수 있습니다.FB 같은 버튼은 페이지에 표시되지만 같은 페이지에는 팝업이 표시되지 않습니다.

<div class="fb-like" data-href="'+ encodeURL(fb_url()) +'" data-action="'+ settings.fbAction +'" data-colorscheme="'+ settings.fbcolorscheme +'" data-send="false" data-layout="button_count" data-width="97" data-show-faces="false"></div> 

변수와 함수가 올바른지 :

페이지와 팝업 두 위치는 동일한 코드를 사용합니다. 이것은 실제 페이지에서 잘 작동하고 최근까지 페이지와 팝업 모두에서 정상적으로 작동했습니다 ... 그래서 내 질문에 뭔가가 페이지에 같은 버튼의 같은 인스턴스를 하나만 표시 할 수있는 경우라면? 이것은 내가 생각할 수있는 유일한 것이지만 다른 누군가가 비슷한 것을 발견했을지 궁금해합니다. 나는 같은 코드가 최근까지 문제가 없었기 때문에 꽤 당혹 스럽다.

답변

0

동일한 HTML 문서에서 동일한 data-href 값을 가진 여러 개의 유사한 버튼을 렌더링 할 수 있습니다. 과 같이 페이스 북 자바 스크립트 SDK를로드하기 전에 <div class="fb-like"/> 요소가 DOM의 일부임을 확인하십시오 :

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=YOUR_APP_ID"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

주 당신은 YOUR_APP_ID을 포함하고 예에서 쿼리 문자열과 같은 부록 당합니다 (xfbml=1 세트가있는 경우 위의 그림과 같이) SDK로드가 완료되면 Like 버튼이 렌더링됩니다. 이 시점 이후에 추가 된 모든 Like 버튼은 렌더링되지 않습니다 (예 : Javascript, jQuery 또는 유사한 방식 (예 : AJAX 호출 후 DOM에 추가 된 경우).

경우는 DOM에 당신의 첨가는, 렌더링과 같이 될 아직처럼 버튼을 렌더링 후FB.init()를 호출의 SDK의 로딩 후 DOM에 두 번째처럼 버튼을 추가해야합니다 :

FB.init({ 
    appId:'YOUR_APP_ID', 
    xfbml:true 
}); 
이것은 작동하지만, 콘솔로 인쇄됩니다 다음과 같은 경고 메시지로 사용하지 않는 것이 좋습니다 :

는 조심

FB.init 이미 호출 된 -이 문제를 나타낼 수 있습니다.

관련 문제