我正在使用html5的localStorage API。localStorage無法傳輸數據,不適用於所有瀏覽器
這種情況是,用戶點擊一個按鈕「添加到我的列表」,以便她可以保存到列表中的位置名稱。
以下代碼僅適用於Chrome。適用於一個窗口,並且如果兩個或多個窗口從同一個源打開。 如果只有一個窗口在Firefox和IE中打開,則可以正常工作。如果有多個窗口,在IE中不會獲取數據。在Firefox中,如果點擊添加名稱,則添加約30次。
我試圖根據我找到的例子來實現我的代碼。
我該如何解決這個問題?
在此先感謝。
<input type="button" value="Add to my list" onClick="savepoi(document.getElementById('name').innerHTML);"/>
<script>
//listen if a storage happened to another window and call the right function
if (window.attachEvent) { // IE8 support
window.attachEvent('onstorage', storageEvent);}
else
{window.addEventListener('storage', storageEvent, true);}
function storageEvent(event) {
//if something is added
if(event.oldValue==null)
{savepoib(event.newValue);}
}
function savepoi(a){
//if no localStorage, set firs key=1, else add 1 to the existing
//save key and name together
if(localStorage.length==0)
{localStorage.setItem(1,1+"-"+a);}
else
{localStorage.setItem((localStorage.length+1),(localStorage.length+1)+"-"+a);}
}
function savepoib(a){
//split to get key and name
var b =a.split("-");
var idi=b[0];//key
var myname = b[1];//name
if(localStorage.length==0)
{localStorage.setItem(1,1+"-"+myname);}
else
{localStorage.setItem(idi,idi+"-"+myname);}
}
</script>
哦,是的,我記得,大多數IE實現,我試圖解僱存儲事件,但事件是缺乏信息,沒有newValue或oldValue或任何東西。但是這是IE10之前我正在做這個測試。事情可能已經改變。 –