2009年2月7日

Storage:事件操控器

物件 | 特徵 | 方法 | 事件
Storage 的事件操控器
onstorage

儲存區被變更時,會啟動此事件操控器。啟動此事件會產生 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() 不能直接寫在事件函式中,會導致錯誤。必須寫在一個函式中,然後由事件函式呼叫之。如上面的寫法。
onstoragecommit

儲存區被寫入磁碟時,會啟動此事件操控器。限 IE8 使用,非標準組織所建議。


©2008-2009 by ant2legs, All Rights Reserved. ant2legs 擁有其製作的文章,圖片與程式的著作權,所有權利保留。