5

我有以下 html 尝试在本地存储中设置一个键。

<!DOCTYPE html>
<html>
<head>
  <title>Test</title>
  <script>
  document.addEventListener('DOMContentLoaded', loaded, false);
  function loaded(){
    try {
      window.localStorage.setItem("Test", "SetItemValue");
      document.getElementById("test").innerHTML = "Test OK";
    } catch (err) {
      document.getElementById("test").innerHTML = "Test FAIL<br>" + err.message;
    }
  }
  </script>
</head>
<body>
  <div id="test">Testing...</div>
</body>
</html>

在一个 iPhone5 上,这会导致以下异常。

测试失败
SecurityError:DOM 异常 18

使用相同的 iOs 版本 (7.0.2) 测试的其他 iPhone(其他三部)可以正常工作。

我已经从https://xydomain.tldhttp://x.domain.tld测试了上述页面,但有相同的例外。

有关“DOM Exception 18”的其他问题似乎与安全设置有关,例如。在 localhost 上进行测试,但通过 https 链接远程内容。但这是一个简单的 html 页面,它只是尝试访问本地存储。

4

3 回答 3

1

我在某处读到,如果 cookie 被阻止,则在设置 localStorage 时会出现 DOM Exception 18 错误。通过转到设置,然后对于 Safari,始终“阻止 Cookie”,我能够在模拟器 iPhone 5(w/iOS7)上重现错误(不确定我是否重现了问题本身)。不知道你的 iPhone 5 是不是这样配置的...

于 2013-10-22T06:14:17.567 回答
1

问题解决了。据透露,客户(错误的电话是客户电话)使用安装在其 iPhone 上的公司范围的安全平台。该平台有一个单独的 Web 浏览器,必须使用它来启用每个 Javascript 功能。使用手机的最终用户不知道这一点,因此他使用了 Safari,当该平台处于活动状态时,它会以某种方式瘫痪。所以解决方案是使用正确的应用程序进行浏览。

该平台为http://www.mobileiron.com/,安全浏览器名为Web@Work

于 2013-11-07T08:14:21.243 回答
-1

我已经看到您无法在前几秒钟内更改本地存储中的数据。设置一个 5000 毫秒的计时器,然后运行 ​​setItem-function 看看会发生什么。

于 2013-10-22T13:42:48.107 回答