为什么这段代码不能在firefox上运行? (它完美适用于Opera)

时间:2011-08-25 10:57:45

标签: firefox facebook-graph-api

我完成了我的应用程序但是当我在其他互联网浏览器上测试时,出现了问题

我将添加我的代码。我无法看到error.as我说它适用于歌剧但不适用于Firefox:/

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2011/fbml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <body>
 <div id="fb-root"></div>
     <script type="text/javascript">
            window.fbAsyncInit = function() {
                FB.init({appId: '199193070140222', status: true, cookie: true, xfbml: true});

            };
            (function() {
                var e = document.createElement('script');
                e.type = 'text/javascript';
                e.src = document.location.protocol +
                    '//connect.facebook.net/tr_TR/all.js';
                e.async = true;
                document.getElementById('fb-root').appendChild(e);

            }
            ());

        function lget(idd){
              FB.api('/'+idd, function(response) {
                document.getElementById(idd+"_a").innerHTML ="<a href='" + response.link + "' id='"+idd+"_und' style='color:#12566C;font-size:14px;' onmouseover=document.getElementById('"+idd+"').style.textDecoration=underline; onmouseout=document.getElementById('"+idd+"').style.textDecoration=none; target='_blank'><b>" + response.name + "</b></a>";
                });
             } 




       </script>       


<div style="padding-left:6px;"><center>

<div id="525864081_a" ></div>

<script type="text/javascript">
lget(525864081);
</script>



<div id="534018674_a" ></div>

<script type="text/javascript">
lget(534018674);
</script>


</div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

您正在以异步模式加载Facebook JS SDK,因此当您在lget中调用它时,FB对象尚未就绪,在您调用lget之后甚至在Firefox中的onload事件之后发生异步加载。

尽量不要异步加载代码并注意它工作正常

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2011/fbml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <body>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
     <script type="text/javascript">
                FB.init({appId: '199193070140222', status: true, cookie: true, xfbml: true});

  function lget(idd){
              FB.api('/'+idd, function(response) {
                document.getElementById(idd+"_a").innerHTML ="<a href='" + response.link + "' id='"+idd+"_und' style='color:#12566C;font-size:14px;' onmouseover=document.getElementById('"+idd+"').style.textDecoration=underline; onmouseout=document.getElementById('"+idd+"').style.textDecoration=none; target='_blank'><b>" + response.name + "</b></a>";
                });
             } 

     </script>

<div style="padding-left:6px;"><center>

<div id="525864081_a" ></div>

<script type="text/javascript">
lget(525864081);
</script>



<div id="534018674_a" ></div>

<script type="text/javascript">
lget(534018674);
</script>

</div>
</body>
</html>

如果你想看到执行顺序尝试这样的事情

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2011/fbml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <body onload="console.log('onload event'); false;">
 <div id="fb-root"></div>
     <script type="text/javascript">
            window.fbAsyncInit = function() {
        FB.init({appId: '199193070140222', status: true, cookie: true, xfbml: true});
        console.log('FB object ready');
            };
            (function() {
                var e = document.createElement('script');
                e.type = 'text/javascript';
                e.src = document.location.protocol +
                    '//connect.facebook.net/tr_TR/all.js';
                e.async = true;
        document.getElementById('fb-root').appendChild(e);
            console.log('This executed first');
            }
            ());

        function lget(idd){
            console.log('lget - ' + idd);
             };
       </script>


<div style="padding-left:6px;"><center>

<div id="525864081_a" ></div>

<script type="text/javascript">
lget(525864081);
</script>



<div id="534018674_a" ></div>

<script type="text/javascript">
lget(534018674);
</script>


</div>
</body>
</html>

这是你在Firefox中获得的输出

This executed first
lget - 525864081
lget - 534018674
onload event
FB object ready