0

아래 스크립트는 Chrome과 Firefox에서 완벽하게 작동하지만 IE에서는 작동하지 않습니다. 이 코드는 사용자가 내 페이지의 팬인지 여부를 확인하는 것입니다. 스크립트는 다른 페이지 (팬)로 리다이렉트하지 않으며, 팬 (fan)이 아닌 likebox도 표시하지 않습니다.Facebook에서 JavaScript가 작동하지 않지만 Firefox와 Chrome에서 작동합니다.

아이디어가 있으십니까? 나는 페이스 북 응용 프로그램과 자바 스크립트에 매우 익숙하다. 내 멍청이 한테 미안해.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> 
<head> 
<meta http-equiv="Cache-Control" content="no-cache" /> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Redirecting...please wait</title> 

<script type="text/javascript" src="../../src/js/jquery-1.7.1.min.js"></script> 
<script type="text/javascript" src="../../src/js/all.js"></script> 
<style type="text/css"> 
    div#container_notlike, div#container_like { 
    display: none; 
    } 
</style> 

</head> 

<body> 

<div id="fb-root"></div> 
<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'APP_ID', // App ID 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
    }); 

    //if like botton click, reflesh page 
    FB.Event.subscribe('edge.create', 
     function(href, widget) { 
     //alert("Like button clicked"); 
     window.location.reload(); 
    }); 

    FB.getLoginStatus(function(response) { 
     var page_id = "PAGE_ID"; 
     if (response && response.authResponse) { 
     var user_id = response.authResponse.userID; 
     //var accessToken = response.authResponse.accessToken; 
     var fql_query = "SELECT uid FROM page_fan WHERE page_id = "+page_id+"and uid="+user_id; 
     FB.Data.query(fql_query).wait(function(rows) { 
      if (rows.length == 1 && rows[0].uid == user_id) { 
      console.log("LIKE"); 
      //alert ("Like"); 
      location.href="https://www.example.com/apps"; 


      } else { 
      console.log("NO LIKEY"); 
      $('#container_notlike').show(); 

      } 
     }); 
     } else { 
     FB.login(function(response) { 
      if (response && response.authResponse) { 
      var user_id = response.authResponse.userID; 
      var fql_query = "SELECT uid FROM page_fan WHERE page_id = "+page_id+"and uid="+user_id; 
      FB.Data.query(fql_query).wait(function(rows) { 
       if (rows.length == 1 && rows[0].uid == user_id) { 
       console.log("LIKE"); 
       //alert ("Like"); 
       location.href="https://www.example.com/apps"; 
       } else { 
       console.log("NO LIKEY"); 
       $('#container_notlike').show(); 

       } 
      }); 
      } else { 
      console.log("NO LIKEY"); 
      $('#container_notlike').show(); 

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

    // Load the SDK Asynchronously 
    (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=APP_ID"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 

<center> 
<div id="container_notlike"> 
      <fb:like-box href="http://www.facebook.com/example" width="292" height="62" show_faces="false" stream="false" header="false" > 
      </fb:like-box> 

    </div> 
</div> 
</center> 

<div id="container_like"> 
    YOU LIKE ME :) 
</div> 

</body> 
</html> 

참고 : 저는 IE9를 사용하고 있으며 이미 javascript를 최신 버전으로 업데이트하고 있습니다. 이미 IE9에서 실행되는 javascript를 열었습니다.

+3

당신이 IE –

+0

에 대한 JavaScript를 업데이트하는 것을 보니 흥미로운 사실을 발견했습니다. 제 스크립트의 문제점을 잘 모릅니다. 따라서 JavaScript를 업데이트하려고합니다. – Nick

+0

무엇이 실패했는지에 대해 자세히 설명해 줄 수 있습니까? 어딘가에서 JS 오류가 발생하고 있습니까? 그렇다면 무엇이 표시됩니까? –

답변

1

이것은 무엇입니까?

<script type="text/javascript" src="../../src/js/all.js"></script> 

FB SDK의 경우 해당 줄을 제거하십시오.

+0

작품입니다! 왜 그런지 물어봐도 될까요? 나는 스크립트가 더 빨리로드 될 수 있도록하려는 라인을 포함시켰다. – Nick

+0

글쎄, 첫째로 빨리로드되지 않습니다. 페이지 상단에 모든 스크립트를 넣는 것은 종종 좋지 않습니다. 다운로드가 완료 될 때까지 렌더링을 차단하므로 몸체 닫기 태그 앞에 추가하는 것이 좋습니다. 둘째, 하단에서 비동기 적으로 다시로드 했으므로 실패했습니다. 두 번로드되면 FB 스크립트는 몇 가지 방법으로 중단됩니다.이 경우 IE에서는 작동하지 않습니다. – Bruno

+0

대답 해 주셔서 감사합니다. 너 나 많이 도와 줘. – Nick

관련 문제