Scriptaculous dom:仅加载工作"有时“;

Scriptaculous dom:loaded working only "sometimes"?

本文关键字:quot 有时 工作 dom 加载 Scriptaculous      更新时间:2023-09-26

所以,基本上,我正在为我的网站开发Facebook登录流。这是相当基本的,但给我带来了一些问题。问题似乎是点击观察者只是在一段时间内工作。硬刷新通常会解决问题。以下是我用来进入它的JS代码…

function fb_login(login_destination)
{
    FB.login(function(response) {
        if (response.authResponse) {
            var fb_auth_token = response.authResponse.accessToken;
            var fb_user_id = response.authResponse.userID;  
            var url =  '/login/ajax/fb_login.php?fb_auth_token=' + fb_auth_token + '&fb_user_id=' + fb_user_id + '&fb_login=' + login_destination;
            window.location = url;
        }
    }, {scope: 'email,user_about_me'});
}
document.observe("dom:loaded", load_fb);
function load_fb()
{
    window.fbAsyncInit = function(){
        FB.init({
            appId      : 'ID'    
            status     : true, 
            cookie     : true,
            xfbml      : true,
            oauth      : true
        });
    }; 
    $('fb_connect').observe('click',function(event){
        var login_destination = $('fb_connect').getAttribute('dest');
        fb_login(login_destination);
    });
}

唯一的症状似乎是它根本不会对某些页面加载的点击做出响应。我使用的ID直接绑定到图像本身。我很好奇是否有人遇到过这种情况,知道如何解决。谢谢。

我以前遇到过这种情况。我最终使用计时器启动初始化脚本作为备份。该函数设置一个变量,如果它已经运行,则退出。丑陋,但有效。

所以,我最终解决了这个问题。代码实际上被更改为。。。。

function load_fb()
{   
    var d = document;
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);

基本上,我现在只是在等待FB JS SDK,直到页面加载之后(请参考前面的代码)。它与脚本无关。