2013-06-21 4 views
1

Я использую IE10 и у меня есть две вкладки: - Tab1: index.html - Таб2: update.htmlLocalStorage в IE10 не работает

В tab2:

 var tel = getURLParameter('TELNR'); 
     if (typeof (Storage) !== "undefined") { 
        localStorage.setItem("telephone", "" + tel + ""); 
    } 

в tab1:

   function handleStorage(oEvent) { 
        var telephone = localStorage.getItem("telephone"); 
        if (telephone != null) { 
         alert("New call from this phone number:" + telephone); 
        } 
       }; 
      $(window).bind('storage', handleStorage); 

Я первый открытый tab1, который ждет событие произойдет. Затем я открываю tab2, проходящий по указанному номеру телефона. Слушатель на tab1 правильно запущен, но телефон равен нулю. Если я обновляю tab2, handleStorage вызывается на этот раз с правильным номером.

Это прекрасно работает в Chrome и Firefox. Любые подсказки?

+0

a) Что такое «хранение» и почему вы его проверяете? б) Вы уверены, что на самом деле ** изменяете ** значение? 'onStorage' запускается только при изменении ** сохраненного значения **. Это, по-видимому, означает, что вы не устанавливаете его правильно в первый раз. –

+0

Чтобы играть в нее безопасно, я удалил оператор if if (typeof (Storage)! == "undefined"), но изменений нет. Я на 100% уверен, что меняю значение. В первый раз tab2 устанавливает значение в X, а tab1 понимает, что что-то было изменено, но когда я получаю значение, мне возвращается «null». Кстати, я видел, что если в tab1 я кодирую это: var phone = oEvent.originalEvent.newValue У меня есть правильное значение, поэтому есть обходной путь. Однако я бы хотел, чтобы решение localStorage работало правильно. –

+0

попробуйте использовать вместо события onstorage событие onstoragecommit –

ответ

0

Я не уверен в вашем сценарии, но помните, что IE медленнее/позже заполняет localStorage, чем другие браузеры при загрузке страницы. Я обратился к этому, выполняя мягкую перезагрузку страницы, location.reload() для IE, после чего данные локального хранилища затем доступны во время последующей загрузки страницы.