javascript beforeunload不修改数据

时间:2015-06-07 21:15:08

标签: javascript onbeforeunload

脚本评估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;

1 个答案:

答案 0 :(得分:0)

setTimeout表示代码在onbeforeunload期间未运行,意味着所有投注均已关闭。如果您想在onbeforeunload期间执行某些操作,请在 onbeforeunload期间执行

window.onbeforeunload = saveData;

(并移除return true中的saveData。)

是的,onbeforeunload对你可以做的事情有限制,但基本的对象操作不是其中之一。