Node.js addEventListener и другие события без браузера - PullRequest
0 голосов
/ 13 октября 2019

Задача - запустить этот скрипт на 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);

В интернете я нашел script . Код ошибки не выдается с ним, но он работает так же, как версия кода без скобок. В чем проблема с этим решением? Весь код был запущен здесь

1 Ответ

0 голосов
/ 13 октября 2019

, поскольку NodeJS не имеет DOM, а также не имеет document объекта, вам нужно создать пользовательское событие по-другому. Проверьте документы узла для этого События узла

// 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.');
...