Почему этот код не работает на Firefox?(работает на Опере отлично) - PullRequest
0 голосов
/ 25 августа 2011

я закончил свое приложение, но когда я тестировал его в других интернет-браузерах, возникла проблема

я добавлю свой код. я не мог видеть ошибку. поскольку я сказал, что это работает в опере, но не в 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 голосов
/ 25 августа 2011

Вы загружаете Facebook JS SDK в асинхронном режиме, и, таким образом, объект FB не готов, когда вы вызываете его внутри lget, асинхронная загрузка происходит после ваших вызовов lget и даже после события onload в 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 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...