儲存區被變更時,會啟動此事件操控器。啟動此事件會產生 event 物件,在 Firefox 測試,只能讀到一個特徵 domain;標準組織建議了多個特徵,都沒支援。
- 程式用法:
<script type='text/javascript'>
function onstorageHd(e)
{
e = e || window.event;
//document.removeEventListener("storage", hd, false); //會導致錯誤
onstorageDel(onstorageHd);
alert('已變更 '+e.domain +' / '+ e.url +' / '+ e.key);
}
function onstorageDel(hd)
{
if(document.removeEventListener)
document.removeEventListener("storage", hd, false);
else
document.detachEvent("onstorage", hd);
}
function onstorageSet(hd)
{
if(document.addEventListener)
document.addEventListener("storage", hd, false);
else
document.attachEvent("onstorage", hd);
}
function onstorageAdd()
{
sessionStorage.Game="射擊遊戲";
}
sessionStorage.Game="好玩遊戲";
</script>
<a href='javascript:onstorageSet(onstorageHd)'>先設定操控器</a> //
<a href='javascript:onstorageAdd()'>改變儲存區資料</a> //
<a href='javascript:sessionStorage.removeItem("Game")'>刪除儲存區資料</a> - 執行結果:
- 上例,Firefox 成功;IE6, Safari, Chrome 失敗。
- 使用 Firefox 測試時發現,removeEventListener() 不能直接寫在事件函式中,會導致錯誤。必須寫在一個函式中,然後由事件函式呼叫之。如上面的寫法。
儲存區被寫入磁碟時,會啟動此事件操控器。限 IE8 使用,非標準組織所建議。