如何在 Safari 隐私模式的本地存储中保存

How to save in local storage of Safari Private Mode

我有一个在本地存储中保存用户名的应用程序。 除了 Safari in private mode.

之外,它适用于所有浏览器

有没有办法在 Safari 私有模式下保存这个变量?我尝试使用 cookie,但它也不起作用...

有解决办法吗?

我实现了一个 LocalStorageHandler 来检查浏览器是否支持本地存储,如果它不支持,那么我使用 Cookie。

这是检查是否支持本地存储的函数:

localStoreSupport: function ()
{
    var testKey = 'test', storage = window.sessionStorage;
    try
    {
        storage.setItem(testKey, '1');
        storage.removeItem(testKey);
        return true;
    }
    catch (error)
    {
        return false;
    }
}

这就是我处理错误的方式:

if (this.localStoreSupport())
    {
        localStorage.setItem(name, value);
    }
    else
    {
        document.cookie = name + "=" + encodeURIComponent(value) + expires + "; path=/";
    }

希望对您有所帮助。

从 Safari 11 开始,他们支持隐私模式下的 localStorage,与其他浏览器相同 提交:https://github.com/WebKit/WebKit/commit/91d15f887ff7174f7754b25b8dc8ab459951e5e1 讨论:https://bugs.webkit.org/show_bug.cgi?id=157010