请等待异步操作 (firebase) 调用完成,然后再加载网页
Wait until asynchronous operation (firebase) call is done before page loads
我正在尝试执行一个异步操作,该操作将获取数据并影响我的网页样式。
有没有办法在页面加载之前完成此操作?由于我想更改div 元素的实际属性,我知道这不太可能,但我想让你们了解如何实现这一目标。
也许通过将数据存储在浏览器会话或其他东西中,以便它只需要考虑一个?我不确定
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);
});
不。在Firebase(以及现代网络的任何其他部分)中加载数据是异步的,您必须在代码中处理它。
如果您的div
在数据可用之前无法正确呈现,则只有在从 Firebase 加载数据后,您才应将其添加到网页中(或在页面上显示)。
因此,将标头隐藏在CSS(#top-header: { 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
}
});
如果整个页面应该隐藏,直到标题具有背景色,您还可以在 CSS 中将body
标记为隐藏,然后在数据可用时显示。
相关文章:
- Pinterest 扩展如何存储(临时)网页中的图像,然后在 iframe 中访问它们
- 如何截屏网页的一部分,然后用Javascript将其传递给服务器
- Javascript:从网页中获取文本,更改它,然后再次显示网页
- 等待Javascript网页抓取功能完成,然后再运行下一页
- 请等待异步操作 (firebase) 调用完成,然后再加载网页
- 我可以请求一个带有JavaScript的网页,然后将其按原样发送到服务器进行进一步分析吗?
- 从应用程序加载网页,然后单击该页面上的链接
- 张贴表格,然后下载其他网页
- 网页中的图像会出现一小段时间,然后消失
- 从文件夹中抓取图像文件,然后显示在网页中
- 图像淡出到另一个,然后函数加载新的网页
- 提交信息,然后在按钮中打开新网页.使用Form type = submit的多个操作
- 如何在离线模式下存储修改后的网页内容,然后再回到在线状态
- 放大网页,然后点击后退按钮改变前一页的背景大小
- & lt; UL>菜单在单一的文件,然后调用它在所有的HTML网页
- 需要打开网页然后填写表格并提交的Javascript代码
- 谷歌机器人在文档准备就绪后等待多长时间,然后拍摄网页的快照
- 将数字值与网页上的单词相关联,然后将其乘以该单词后面的网页上的数字
- 我的网页加载,然后立即消失.在chrome开发工具中,没有坏的请求
- 将字符串从网页传递到php,然后传递到Obj-C命令行工具的正确方法