我试图保存用户输入从文本区域在卸载页面上的本地存储,然后读取它回到一个文本区域,当用户返回。它在桌面浏览器中运行良好,但在我的iPhone上似乎行不通。这与之前已经回答的隐私浏览问题不同。
这里是html:
<html>
<head>
<title>Cookie Test</title>
<link rel="stylesheet" type="text/css" href="css/site.css">
</head>
<body class="full" onload="getText()" onunload="saveText()">
<div class="fullscreen-overlay" id="fullscreen_overlay">
<div class="fullscreen-container js-fullscreen-container">
<div class="textarea-wrap">
<textarea name="fullscreen-contents" id="fullscreen-contents"></textarea>
</div>
</div>
</div>
</body>
</html>
以及获取和写入localstorage的Javascript:
var text = document.getElementById('fullscreen-contents');
function saveText() {
localStorage.savedText = text.value;
console.log("saved");
}
function getText() {
if (localStorage.savedText) {
text.value = localStorage.savedText;
console.log("loaded");
}
}
这是发生在iOS 8和隐私浏览没有打开。知道是怎么回事吗?谢谢!
用onpageshow
和onpagehide
代替onload
和onunload
根据iOS开发者库(Safari文档也是如此),load
和unload
事件已被弃用,建议分别使用pageshow
和pagehide
:
对于向后和向前优化,
load
和unload
事件可能不像预期的那样工作。请使用pageshow
和pagehide
事件。
sessionStorage.setItem('some Key', 'some value');
这可能不适用于某些iPhone和iPad操作系统版本
最好的解决方案是将这段代码放入try和catch中,这样之后的代码就可以运行
try {
sessionStorage.setItem('some Key', 'some value');
}catch(ex) {
// iOS 8.3+
/*Does not support session Storage Correctly;
alert('unsupported'+ex);*/
}