2016-06-21 56 views
1

我可以通過監聽器函數將事件接收的數據存儲到我的HTML文件中的變量中(我的意思是超出監聽器函數的範圍)?事件監聽器和本地數據存儲器

<div id="id1"></div> 
<script> 
    var a = document.querySelector('#id1'); 
    a.addEventListener('fooEvent', function(e){ 
     console.log(e.detail); 
    }); 
    var event = document.createEvent("CustomEvent"); 
    var data = "[1,2,3]"; 
    event.initCustomEvent("fooEvent", true, true, data); 
    a.dispatchEvent(event); 
</script> 

的jsfiddle:https://jsfiddle.net/dtxwr6h9/

在這個例子中,我希望有監聽功能外訪問e.detail數據。這可能以某種方式嗎?

在此先感謝!

+1

當然可以。只需在捕獲事件後使用JSON.stringify將其存儲在變量或localStorage中。如有必要,然後解除綁定事件處理程序。 – ManoDestra

+1

感謝您的回答!我試過了,它工作正常。 – luthien

回答

1

當然。只需在捕獲事件後使用JSON.stringify將其存儲在變量或localStorage中。如有必要,然後解除綁定事件處理程序。

E.g.

<script> 
    // variable here for storage 
    var storedObj; 
    var a = document.querySelector('#id1'); 
    a.addEventListener('fooEvent', function(e){ 
     console.log(e.detail); 
     // store it in your outer scoped variable, or localStorage, if you prefer. 
     storedObj = e.detail; 
    }); 
    var event = document.createEvent("CustomEvent"); 
    var data = "[1,2,3]"; 
    event.initCustomEvent("fooEvent", true, true, data); 
    a.dispatchEvent(event); 
</script>