javascript - 如何跨多个页面从firebase获取uniqueID
问题描述
我的项目是有几页的调查。我想将几个页面的答案上传到同一个 uniqueID 中。现在我可以从页面 js 文件中获取 uniqueID,但是如何将这个 uniqueID 传输到其他 js 文件,以便我可以将数据上传到相同的 uniqueID。
解决方案
问题可以重新表述为如何通过不同的页面和 js 文件访问变量值。
- 我更喜欢的方式——有大量数据——是加载“全局脚本”的用户不可见的基本页面。此基本页面加载和卸载所有其他页面(包括 js 和 css 文件)。由于您的情况下的变量 firebaseID 是全局定义的,因此它可以工作。
- 如果它的数据不合理,您也可以将其放入 LocalStorage(最好是加密的),如果用户想暂停调查并稍后完成调查,这也将有所帮助。(您在移动设备上有 5MB,在桌面设备上有 10MB)。
有关解决方案一的更多详细信息:
简单的部分是将 HTML 插入其他 HTML。我使用服务器生成的视图,因此基本页面会根据需要添加和删除 HTML。更难的部分是 js 的页面(视图)特定加载。
在我的用例中,用户可以通过导航跳来跳去,直到他们最终提交并完成。如果您只允许顺序向前移动而不允许向后移动,那就更容易了。我实际上模仿了一种安宁的行为。基本脚本中的一些构建块包括
// Some global vars
var statMsg = "";
var navTargetInitial= "app";
var navTarget;
var htmlDir = "app"; // directory of the html templates
var scriptDir = "js"; // directory of the user scripts
var routes = [
{
navTarget: "main",
loadScript: true,
navTitle: "Survey page 1",
navMenutext: "Page 1"
}, {
navTarget: "app",
loadScript: true,
navTitle: "Survey page 2",
navMenutext: "Page 2"
},
....
];
// Then docReady beside other stuff
function docReady() {
// other stuff
nav2Page(navTarget);
}
// here we handover data, put relevant things to sessionStorage
window.onbeforeunload = function (e) {
// Do stuff
};
// here we cleanup
window.onunload = function () {
// cleanup
};
关键部分是在 html 进入 DOM 之后加载新的 js,因此重要的部分是事件 DOM 加载的事件处理程序
document.addEventListener("DOMContentLoaded",
loadJScript(navScript, function(response, status, xhr ){// error handling }
剩下的就是 ajax、错误处理、对页面历史中后退/前进点击的反应以及相应的反应。希望这可以帮助
推荐阅读
- r - R:在所有可能的变量组合之间执行 Cohen 的 Kappa 检验
- python - 以python方式整理列表推导
- c# - Unity 文件名与类名错误不匹配 - 但它们确实匹配
- flutter - Flutter:Future函数不断调用
- r - Group_by / summarise 语句不适用于多个语句
- azure - Azure MSI 强制令牌刷新
- angular - 使用 Angular 和 nginx 我收到错误 Uncaught TypeError: Super expression must be null or a function
- azure-cosmosdb - Gremlin 查询以在同一响应中检索计数和数据
- c# - C# MySQL 无法连接到 ubuntu 服务器
- wordpress - 如何在 WooCommerce 中向用户提供运输方式选择?