webshim polyfill localStorage在IE6中未定义

时间:2011-05-20 15:25:32

标签: html5 local-storage webshim

当我在IETester IE6窗口中运行以下代码时:

<!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>DealingTree</title>
        <meta http-equiv="Content-type" content="text/html;charset=utf-8"/>
        <script type="text/javascript" src="/js/modernizr.js"> </script>
        <script type="text/javascript" src="/js/jquery.js"> </script>
        <script type="text/javascript" src="/js/sssl.js"> </script>
        <script type="text/javascript" src="/js/webshims/js-webshim/minified/polyfiller.js"> </script>
      </head>
      <body>
        <script type="text/javascript">
          //<![CDATA[
          $.webshims.polyfill('json-storage');
          localStorage.setItem('myKey','myValue');
          alert(localStorage.getItem('myKey'));
          //]>
        </script>
      </body>
    </html>

我在弹出对话框中收到以下错误:

Line:  15
Char:  7
Error: 'localStorage' is undefined
Code:  0
URL:   http://localhost/problem2.html

在IE7模式下运行的IE9中,代码运行良好。

当我改为使用道格拉斯·克罗克福德的JSON2.js和雷米·夏普的storage polyfill - 这应该是基于 - 我没有问题。

请帮帮忙?

2 个答案:

答案 0 :(得分:2)

我收到了作者的电子邮件(Alexander Farkas),解释说使用polyfill的代码必须在domready事件处理程序中,如下所示:

$.webshims.polyfill('json-storage');
$(function(){
  localStorage.setItem('myKey','myValue');
  alert(localStorage.getItem('myKey'));
});

了解更多信息: http://afarkas.github.com/webshim/demos/index.html#polyfill-ready

答案 1 :(得分:-1)

IE6不支持HTML5功能 。对于应该已经死亡和埋葬的古老浏览器来说,这并不奇怪(IE6于2001年发布,HTML5的基础仅在2004年奠定)。有关详细信息,请参阅this answer

请注意,有些包装器能够模仿这样的功能 - 例如this question建议jStorage与IE6 +兼容。