Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面加载之前,请等待异步操作(firebase)调用完成_Javascript_Jquery_Asynchronous_Firebase - Fatal编程技术网

Javascript 在页面加载之前,请等待异步操作(firebase)调用完成

Javascript 在页面加载之前,请等待异步操作(firebase)调用完成,javascript,jquery,asynchronous,firebase,Javascript,Jquery,Asynchronous,Firebase,我正在尝试执行一个异步操作,它将捕获数据并影响我的网页样式 有没有办法在页面加载之前完成此操作?由于我想更改div元素的实际属性,我知道这不太可能,但我想让你们知道如何实现这一点 可能通过将数据存储在浏览器会话或其他方式,使其只需思考一个问题?我不确定 var grab\u user=new Firebase(“https://.firebaseio.com/users/“+auth.uid); //从firebase抓取数据 抓取用户一次('value',函数(dataSnapshot){ v

我正在尝试执行一个异步操作,它将捕获数据并影响我的网页样式

有没有办法在页面加载之前完成此操作?由于我想更改div元素的实际属性,我知道这不太可能,但我想让你们知道如何实现这一点

可能通过将数据存储在浏览器会话或其他方式,使其只需思考一个问题?我不确定

var grab\u user=new Firebase(“https://.firebaseio.com/users/“+auth.uid);
//从firebase抓取数据
抓取用户一次('value',函数(dataSnapshot){
var$user=dataSnapshot.val();
//如果用户拥有此对象,
//将头部颜色更改为其设置中的颜色
if($user.whitelabel)
$(“#顶部标题”).css('background-color',$user.whitelabel.color);
});

没有。在Firebase(以及现代web的几乎所有其他部分)中加载数据是异步的,您必须在代码中处理它

如果您的
div
在数据可用之前无法正确呈现,则您应该仅在从Firebase加载数据后将其添加到页面(或在页面上显示)

因此,将您的标题隐藏在CSS中(
#顶部标题:{display:none}
),然后将代码更改为:

var grab_user = new Firebase("https://<FIREBASE>.firebaseio.com/users/"+auth.uid);
//grab data from firebase
grab_user.once('value', function (dataSnapshot) {
    var $user = dataSnapshot.val();

    //if the user has this object,
    //change the head color to whats in their settings
    if($user.whitelabel) {
        $("#top-header").css('background-color', $user.whitelabel.color);
        $("#top-header").show(); // now we're ready to show the header
    }
});
var grab\u user=new Firebase(“https://.firebaseio.com/users/“+auth.uid);
//从firebase抓取数据
抓取用户一次('value',函数(dataSnapshot){
var$user=dataSnapshot.val();
//如果用户拥有此对象,
//将头部颜色更改为其设置中的颜色
if($user.whitelabel){
$(“#顶部标题”).css('background-color',$user.whitelabel.color);
$(“#顶部页眉”).show();//现在我们准备好显示页眉了
}
});

如果整个页面应该隐藏,直到标题有背景色,您也可以将
正文标记为隐藏在CSS中,然后在数据可用时显示。

谢谢!最后,我将
可见性
更改为
主体
,因为它在执行
显示:无
var grab_user = new Firebase("https://<FIREBASE>.firebaseio.com/users/"+auth.uid);
//grab data from firebase
grab_user.once('value', function (dataSnapshot) {
    var $user = dataSnapshot.val();

    //if the user has this object,
    //change the head color to whats in their settings
    if($user.whitelabel) {
        $("#top-header").css('background-color', $user.whitelabel.color);
        $("#top-header").show(); // now we're ready to show the header
    }
});