LocalStorage无法在iPhone上运行 - 不在私人浏览中

时间:2015-07-14 20:39:27

标签: javascript jquery ios iphone html5

我试图在卸载页面时从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中发生这种情况,并且未启用“私密浏览”。知道会发生什么吗?谢谢!

2 个答案:

答案 0 :(得分:1)

使用onloadonunload代替loadunload

根据this node of the manual(以及iOS developer library的相同内容),pageshowpagehide事件已弃用,建议使用load和分别为unload

  

pageshowpagehide事件可能无法按预期进行后退和前进优化。请改用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);*/

   }