2013-06-21 55 views
1

我使用IE10和我有两个标签: - TAB1:index.html的 - TAB2: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)什么是'存储'在那里做,为什么你检查它? b)你确定你实际上正在改变**的价值吗?当存储值被**改变时,'onStorage'只会触发**。这似乎意味着你第一次没有正确设置它。 –

+0

为了安全起见,我删除了if语句if(typeof(Storage)!==“undefined”),但没有任何变化。我100%肯定我正在改变价值。第一次tab2将值设置为X,并且tab1理解某些内容已更改,但是当我检索到值时,我将返回“null”。顺便说一下,我已经看到,如果在tab1中我编码:var telephone = oEvent.originalEvent.newValue我有正确的值,所以已经有一个解决方法。不过,我希望localStorage解决方案能够在第一时间正常工作。 –

+0

尝试使用onstoragecommit事件而不是onstorage事件 –

回答

0

我不确定您的方案,但请注意,IE浏览器在页面加载时比其他浏览器更慢或更晚来填充localStorage。我已经通过为IE进行软重新载入,location.reload(),然后在随后的页面加载期间使用localStorage数据来解决此问题。