脚本评估onbeforeunload,保存到本地存储,但这是我的问题:它不会改变任何数组或对象,也不允许任何新变量。
当我将对象保存到本地存储之前需要修改它时,这会妨碍我们。
这似乎是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;
答案 0 :(得分:0)
setTimeout
表示代码在onbeforeunload
期间未运行,意味着所有投注均已关闭。如果您想在onbeforeunload
期间执行某些操作,请在 onbeforeunload
期间执行:
window.onbeforeunload = saveData;
(并移除return true
中的saveData
。)
是的,onbeforeunload
对你可以做的事情有限制,但基本的对象操作不是其中之一。