尝试访问本地存储时,javascript / html5中的Dom Exception 18

时间:2013-10-04 07:52:16

标签: javascript iphone html5 ios7

我有以下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上,这会导致以下异常。

  

测试FAIL
SecurityError:DOM Exception 18

使用相同的iOs版本(7.0.2)测试的其他iPhone(另外三个)可以使用。

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:-1)

我已经看到你无法在最初的几秒内更改本地存储中的数据。将计时器设置为5000毫秒,然后运行setItem函数以查看发生的情况。