2013-07-07 2 views
0

어쨌든이 방법은 매우 간단하다고 생각합니다. 그러나 나는 그 방법을 잘못보고 있습니다.페이스 북처럼 되찾기 상자 코드가 변경된 href로 다시 트리거되도록

동적으로 href의 페이지 이름 부분을 상자 HTML5 코드와 같은 FB에로드합니다. 버튼 ('fbtn')을 클릭하면이 버튼이 트리거되고 각 버튼에는 다른 페이지 이름이 붙어 있습니다 (버튼과 페이지 이름도 동적으로 생성됩니다). 이것은 다음과 같이 잘 작동합니다. a) 페이지 이름이 함수로 전달됩니다. b) 처음으로 FB 코드가 올바르게 실행되고 디스플레이가 생성됩니다. Like Box를 표시하고 두 번째 버튼 (또는 동일한 버튼)을 클릭하는 div를 닫으면 변수 (페이지 이름)가 전달되지만 FB 코드가 실행되지 않는 것처럼 보입니다. 따라서 div가 표시되고, 그러나 아무것도 그것 안에 없다.

FB 코드는 페이지로드시 자동으로 실행되지 않도록 (버튼과 페이지 이름을 만들지 않은 경우)이 함수에 포함됩니다.

'닫기'를 클릭하면 (아래 참조) 변수 함수가 첫 번째 클릭 전의 상태로 되돌아 갈 수 있도록 전체 함수를 다시 설정할 수있는 방법이 있습니까? (즉, 변수 페이지 FB 코드를 실행하려면?)

의견을 보내 주셔서 감사합니다.

$('#classOne').on('click','.fbtn', function() { 
    fbid = this.value; 
     if (!fbid) { 
     fbid = 'Boo'}; 
     alert('' + fbid + ''); 
    (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_US/all.js#xfbml=1&appId=XXXXXXXXXXXXXXX"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
    $('#fbLike').html('<div id =closeFB>Close</div><div id=fb-root></div><fb:like-box  href=https://www.facebook.com/' + fbid + ' width=900 height=500 show_faces=true stream=true show_border=true header=true></fb:like-box>'); 
    $('#closeFB').stop().animate({height:'20'},50); 
    $('#fbLike').stop().animate({height:'500'},500); 
    $('#closeFB').click(function() { 
    $('#fbLike').html('').stop().animate({height:'0'},500); 
    $('#closeFB').stop().animate({height:'0'},50); 
}); 
}); 

답변

0

음과

if (d.getElementById(id)) return; 

교체, 적어도 하나 개의 솔루션은 FB은 iframe 코드를 사용하는 것입니다. 동적으로 iframe src의 href를 변경하면 제대로 작동하고 Like 상자는 클릭 할 때마다 다른 src로 다시로드됩니다. 이 방법으로 문제를 해결할 수 있지만 교육 목적으로 만 사용하는 경우 자바 스크립트 솔루션을 사용하는 사람이 있다면 자바 스크립트 솔루션에 관심이 있습니다. 감사!

0

문제는 코드가 그것이 한 번만 작동하므로 기술적으로 문서에 이미 ID facebook-jssdk있는 스크립트를 발견하면 아무것도 할, 중 각 스크립트에 대해 서로 다른 ID를 제공하거나 기존 제거되지 것입니다 스크립트를 수행하는, 하나 새롭게 추가하기 전에이

var currentScript = d.getElementById(id); 
if (currentScript){ 
    currentScript.parentNode.removeChild(currentScript); 
} 
+0

감사합니다 -하지만 나에게 또 다른 오류 제공 - 형식 오류가 : fjs.parentNode이 \t fjs.parentNode.insertBefore (JS, FJS)이 오류에 브레이크] 널 (null)입니다; – sideroxylon