Проблема может быть переформулирована так, чтобы иметь значение переменной, доступное через различные страницы и файлы js.
- Мой предпочтительный способ сделать это - с большим количеством данных - это невидимая пользователю базовая страница, загружающая «глобальный скрипт». Эта базовая страница загружает и выгружает все остальные страницы (включая файлы js и css). Поскольку переменная в вашем случае firebaseID определена глобально, она работает.
- Если она не имеет смысла, вы можете также поместить ее в LocalStorage (предпочтительно в зашифрованном виде). Это также поможет, если пользователь захочет приостановить опрос и позже до фини sh это. (У вас есть 5 МБ на мобильных устройствах и 10 МБ на рабочем столе).
Подробнее о первом решении:
Простая часть - вставить HTML в другое HTML. Я использую сгенерированные сервером представления, поэтому базовая страница добавляется и удаляется HTML по мере необходимости. Более сложная часть - это страница (представление), специфицирующая c загрузка js.
В моем случае пользователи могут перемещаться по навигации до тех пор, пока они, наконец, не отправят и не закончат sh. Если вы разрешаете только последовательное движение вперед, а не назад - это проще. Я на самом деле мими c спокойное поведение. Некоторые строительные блоки в базовом сценарии включают
// 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
};
Важная часть - загрузка нового js после того, как html находится в DOM, поэтому важной частью является обработчик событий для загруженного DOM события
document.addEventListener("DOMContentLoaded",
loadJScript(navScript, function(response, status, xhr ){// error handling }
Остальное - ajax, обработка ошибок, реакция на клики при переходе назад / вперед по истории страницы и соответствующая реакция на нее. Надеюсь, это поможет