当我在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
代码在IE9以IE7模式运行时运行良好。
当我改用道格拉斯·克罗克福德的JSON2.js和雷米·夏普的storage polyfill时,我没有这个问题。
请帮忙?
最佳答案
我收到一封来自作者(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