我尝试了这个方法:
QWebSettings* settings = QWebSettings::globalSettings();
settings->setAttribute(QWebSettings::LocalStorageEnabled, true);
auto path = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
settings->setOfflineStoragePath(path);
window.localStorage为true(非null或未定义),但是当我将项目插入localStorage时:
localStorage.setItem("b","isaac");
alert(localStorage["b"]);
发生错误,webkit检查器控制台中的错误消息为:
QuotaExceededError:DOM例外22:尝试向存储中添加超出配额的内容。
答案 0 :(得分:6)
我整天都在肆虐,因为重启应用后它无法正常工作。 所以我认为这对某人有帮助:
QWebSettings* settings = QWebSettings::globalSettings();
settings->setAttribute(QWebSettings::LocalStorageEnabled, true);
auto path = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
settings->setOfflineStoragePath(path);
settings->enablePersistentStorage(path);
注意enablePersistentStorage
答案 1 :(得分:2)
我忘了我已经启用了一个非常重要的swithcer:
settings->setAttribute(QWebSettings::PrivateBrowsingEnabled,true);
这会将浏览器设置为私有模式,并阻止您向localStorage插入值。但是官方的api doc并没有提到它。
您只需设置禁用切换器即可解决问题:
settings->setAttribute(QWebSettings::PrivateBrowsingEnabled,false);