Сценарий оценивает onbeforeunload, сохраняет локальное хранилище, но вот моя проблема: он не изменяет никаких массивов или объектов и не допускает никаких новых переменных.javascript beforeunload не изменяющие данные
Это мешает, когда у меня есть объекты, которые необходимо изменить, прежде чем сохранять их в локальном хранилище.
Это похоже на ограничение JavaScript (так как предупреждения также не срабатывают).
Есть ли способ получить это?
var saved = { hello: "world" };
var anArray = ["default"];
saveData = function()
{
console.warn('Saving data...');
saved['test'] = true;
anArray.push('something');
localStorage.setItem('test', 'somedata');
console.debug(saved);
console.debug(anArray);
window.onbeforeunload = null;
console.warn('Done saving...');
return true;
}
proxySave = function()
{
setTimeout(saveData, 0);
return;
}
window.onbeforeunload = proxySave;
Почему 'setTimeout()'? Ваша страница может быть выгружена до того, как срабатывает 'setTimeout()', поэтому она не будет срабатывать. 'alert()' не разрешено в обработчике выгрузки, потому что слишком легко злоупотреблять. – jfriend00
Почему вы используете 'setTimeout'? Его единственная цель заключается в том, чтобы гарантировать, что ничего не спасено вообще. – Ryan
Я искал решения, и аналогичная проблема предлагала setTimeout. –