最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Node.js addEventListener和其他没有浏览器的事件

运维笔记admin24浏览0评论

Node.js addEventListener和其他没有浏览器的事件

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.');
发布评论

评论列表(0)

  1. 暂无评论