2014-05-18 52 views
19

我想分派一個事件,它將一些數據傳遞給監聽該事件的任何事件偵聽器。有數據的調度事件

考慮到觸發事件的功能:

function click() { 
    const x = 'foo' 
    document.dispatchEvent(new CustomEvent('clicked')) 
} 

click() 

如何傳遞自定義數據的事件監聽器?

document.addEventListener('clicked', function(e) { 
    console.log(x) // logs "foo" 
}) 

回答

34

也許你正在尋找event.detail

new CustomEvent('eventName', {'detail': data}) 

相反的數據使用X和事件監聽器,你可以使用event.detail

function getSelectionBounds() { 
    var x = (bounds["x"].toFixed(2)); 
    var y = "xyz"; 
    var selectionFired = new CustomEvent("selectionFired", { 
    "detail": {"x":x,"y":y } 
    }); 

    document.dispatchEvent(selectionFired); 
}; 

document.addEventListener("selectionFired", function (e) { 
    alert(e.detail.x+" "+e.detail.y); 
}); 
+0

@NicholasKyriakides檢查我的更新答案訪問X –

+0

@NicholasKyriakides在所有的瀏覽器中都會發生這種情況嗎?請使用我建議的或創建小提琴來更新代碼 –

+0

@NicholasK yriakides警報顯示在我更新的代碼中。 –