【问题标题】:Why does not this code work on firefox? (it works on Opera perfectly)为什么这段代码在 Firefox 上不起作用? (它在 Opera 上完美运行)
【发布时间】:2011-08-25 10:57:45
【问题描述】:

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

我将添加我的代码。我看不到错误。正如我所说,它适用于歌剧,但不适用于 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>

【问题讨论】:

标签: firefox facebook-graph-api


【解决方案1】:

您正在异步模式下加载 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

【讨论】:

    猜你喜欢
    • 2011-12-13
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多