Node.js addEventListener和其他没有浏览器的事件
该任务是在不使用浏览器的情况下在Node.js上运行此脚本。问题在于该代码仅在浏览器的上下文中有效,并且仅在这种形式下可用。
var d1 = {};
function test(data){
console.log(data);
d1 = data;
}
addEventListener("test", test, false);
var cv = document.createEvent("CustomEvent");
(function init(e) {
e.initCustomEvent("test", false, false, ["test1","test2", {test: 'test3'}]);
dispatchEvent(e)
}(cv));
console.log(d1);
如果更改init的功能(删除括号(...)),则代码将无法正常工作。
function init(e) {
e.initCustomEvent("test", false, false, ["test1","test2", {test: 'test3'}]);
dispatchEvent(e)
}(cv);
在Internet上,我找到了script。错误代码没有给出,但它的工作原理与没有括号的代码版本相同。该解决方案有什么问题?所有代码已启动here
回答如下:因为NodeJS没有DOM,也没有document
对象,所以需要以不同的方式进行自定义事件。在Node docs上查看Node Events
// get the reference of EventEmitter class of events module
var events = require('events');
//create an object of EventEmitter class by using above reference
var em = new events.EventEmitter();
//Subscribe for FirstEvent
em.on('test', function (data) {
console.log('First subscriber: ' + data);
});
// Raising FirstEvent
em.emit('test', 'This is my first Node.js event emitter example.');