我试图在卸载页面时从localstorage中的textarea中保存用户输入,然后在用户返回时将其读回textarea。它在桌面浏览器中运行良好,但似乎不能在我的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中发生这种情况,并且未启用“私密浏览”。知道会发生什么吗?谢谢!
答案 0 :(得分:1)
使用onload
和onunload
代替load
和unload
。
根据this node of the manual(以及iOS developer library的相同内容),pageshow
和pagehide
事件已弃用,建议使用load
和分别为unload
:
pageshow
和pagehide
事件可能无法按预期进行后退和前进优化。请改用svg
和$(".button").on("click", function(e) { alert("This button has been clicked."); })
事件。
答案 1 :(得分:0)
sessionStorage.setItem('some Key', 'some value');
这可能不适用于某些iPhone和iPad OS版本
最好的解决方案是将此代码放入try中,然后在运行
后捕获代码 try {
sessionStorage.setItem('some Key', 'some value');
}catch(ex) {
// iOS 8.3+
/*Does not support session Storage Correctly;
alert('unsupported'+ex);*/
}