2013-02-10 38 views
1

我希望能夠將自定義數據傳遞給模擬的JavaScript事件,以便我可以在事件偵聽器回調中唯一標識此模擬事件。例如,如果我稱之爲:將自定義數據傳遞給模擬的JavaScript事件

var event = document.createEvent("MouseEvents"); 
var args = ['mousemove', true, true, window, 1, 0, 0]; 
event.initMouseEvent.apply(event, args); 
target.dispatchEvent(event); 

我將如何能夠將數據傳遞到這個事件,然後從事件偵聽器回調找回?

+0

如果要發送自定義數據,請使用CustomEvent,如下所示:http://davidwalsh.name/customevent – 2013-02-10 23:30:40

回答

3

只需將數據添加到您的event對象應該是足夠了:

target.addEventListener("mousemove", function(e) { 
    console.log(e.data); 
}, false); 

var event = document.createEvent("MouseEvents"); 
var args = ['mousemove', true, true, window, 1, 0, 0]; 
event.data = "foobar"; 
event.initMouseEvent.apply(event, args); 
target.dispatchEvent(event); 

附: 注意,在一些瀏覽器中,參數不夠用,否則都需要引發異常。我不確定你想要支持哪些瀏覽器。有關所有參數,請參閱:https://developer.mozilla.org/en/docs/DOM/event.initMouseEvent

+0

我不確定支持鼠標中自定義數據的所有瀏覽器事件。 – 2013-02-10 23:32:20

+0

是啊,這是我正在尋找的,但我很好奇@mhaqs點。我無法使用自己的自定義事件 - 它需要成爲「鼠標移動」事件。 – 2013-02-10 23:32:48

+0

我不確定IE是什麼,因爲我不是Windows用戶,IE總是有不可預知的行爲。然而,這不是支持鼠標事件中的自定義數據,它只是將動態屬性添加到絕對受到廣泛支持的JavaScript對象(並且事件對象不是例外)。 – ZER0 2013-02-10 23:36:34

相關問題