LocalStorage不能在iPhone上工作-不能在私人浏览

LocalStorage not working on iPhone - Not in Private Browsing

本文关键字:不能 浏览 iPhone LocalStorage 工作      更新时间:2023-09-26

我试图保存用户输入从文本区域在卸载页面上的本地存储,然后读取它回到一个文本区域,当用户返回。它在桌面浏览器中运行良好,但在我的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和隐私浏览没有打开。知道是怎么回事吗?谢谢!

onpageshowonpagehide代替onloadonunload

根据iOS开发者库(Safari文档也是如此),loadunload事件已被弃用,建议分别使用pageshowpagehide:

对于向后和向前优化,loadunload事件可能不像预期的那样工作。请使用pageshowpagehide事件。

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);*/
   }