我尝试过的方法:
QWebSettings* settings = QWebSettings::globalSettings();
settings->setAttribute(QWebSettings::LocalStorageEnabled, true);
auto path = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
settings->setOfflineStoragePath(path);
window.localStorage
是true
(不是null
或undefined
),但是当我将项目插入本地存储时:
localStorage.setItem("b","isaac");
alert(localStorage["b"]);
发生错误,webkit检查器控制台中的错误消息是:
QuotaExceededError:DOM 异常 22:尝试向存储中添加超出配额的内容。
我气愤了一整天,因为应用程序重新启动后就不起作用了。 所以我认为这对某人会有帮助:
QWebSettings* settings = QWebSettings::globalSettings();
settings->setAttribute(QWebSettings::LocalStorageEnabled, true);
auto path = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
settings->setOfflineStoragePath(path);
settings->enablePersistentStorage(path);
注意启用持久存储
我忘了我已经启用了一个非常重要的开关:
settings->setAttribute(QWebSettings::PrivateBrowsingEnabled,true);
这会将浏览器设置为私有模式并阻止您向 localStorage 插入值。但官方api文档没有提及。
您只需设置禁用切换器即可解决问题:
settings->setAttribute(QWebSettings::PrivateBrowsingEnabled,false);