当我在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 - 这应该是基于 - 我没有问题。
请帮帮忙?
答案 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 +兼容。