外部Javascript不与按钮点击交互?

时间:2011-06-15 18:52:13

标签: javascript facebook

我有一个用于facebook集成的javascript,当我将它包含在我的HTML正文中时,它可以正常工作。现在,由于我有很多页面都需要facebook auth脚本,我将它保存在一个单独的文件中并将其包含在我的所有页面中,但是当我这样做时,脚本似乎停止运行。这是代码

//Ajax XML Loaders
var xmlhttp;
function loadXMLDoc(url,cfunc)
    {
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=cfunc;
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
}
window.fbAsyncInit = function() {
    FB.init({appId: 'xxxxxx', status: true, cookie: true, xfbml: true});

    /* All the events registered */
    FB.Event.subscribe('auth.login', function(response) {
        // do something with response
        login();
    });
    FB.Event.subscribe('auth.logout', function(response) {
        // do something with response
        logout();
    });

    FB.getLoginStatus(function(response) {
        if (response.session) {
            // logged in and connected user, someone you know
        }
    });
};
(function() {
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol +
        '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
}());
function login(){
    //Fire the PHP Facebook Auth Script
    loadXMLDoc('http://www.website.com/scripts/php/facebook_auth.php',function()
        {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            if (xmlhttp.responseText == "Success"){
                window.location.reload;
            }else{
                window.location = "http://www.website.com/login_failed.php";    
            }
        }
    });
}
function fblogoutClick(){
    FB.logout(function(response) {

    }); 
}
function logout(){
    //Fire the PHP Logout Script
    loadXMLDoc('http://www.website.com/scripts/php/logout_exec.php',function()
        {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            if (xmlhttp.responseText == "Success"){
                window.location.reload;
            }else{
                window.location = "http://www.website.com/logout_failed.php";   
            }
        }
    });
}

我把它放在头上:

<script src="http://www.thehoppr.com/scripts/javascript/facebook_login.js"></script>

按钮点击触发FB登录事件,但就像我说的,如果我将它包含在体内,它可以正常工作,但是如果我将它保存在外部并将其加载到头部或身体中,它将停止运行而且我不确定为什么。

2 个答案:

答案 0 :(得分:1)

这种情况发生的唯一原因是代码未正确包含在内。就实际运行的代码而言,

之间没有显着差异
<script>
foo();
</script>

<script src="foo.js"></script>

...其中foo.js包含foo();,前提是这些标签位于同一位置。如果您将内联标记放在一个位置,但是将外部参考标记放在其他位置,那么当然在脚本的位置方面存在差异。

的差异,最值得注意的是,浏览器不必通读脚本代码来查找结束script标记,这是一件好事;但是这可能与此无关。)

包括脚本在内的最常见错误是:

  • 不包括结尾</script>标记。
  • 尝试使用自动关闭标记,例如<script src="foo.js" />无效。
  • 错误地获取JavaScript文件的路径。 : - )

答案 1 :(得分:0)

您很可能没有正确添加脚本。你使用自闭标签吗? (&lt; /&gt;)

不允许使用