webshim polyfill localStorage, неопределенный в IE6 - PullRequest
3 голосов
/ 20 мая 2011

Когда я запускаю следующий код в окне 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 Дугласа Крокфорда и хранилища данных Реми Шарпа - по предположению, на котором это основано - у меня нет проблемы.

Пожалуйста, помогите?

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Я получил электронное письмо от автора (Александр Фаркаш), в котором объясняется, что код, использующий полифил, должен находиться внутри обработчика событий domready, например:

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

Для получения дополнительной информации: http://afarkas.github.com/webshim/demos/index.html#polyfill-ready

0 голосов
/ 20 мая 2011

IE6 вообще не поддерживает функции HTML5 . Это не очень удивительно для древнего браузера, который уже должен был быть мертв и похоронен (IE6 был выпущен в 2001 году, а основы HTML5 были заложены только в 2004 году). См. этот ответ для более подробной информации.

Обратите внимание, что существуют оболочки, которые способны эмулировать такую ​​функциональность - например, этот вопрос предлагает jStorage для совместимости с IE6 +.

...