Почему addEventListener не работает в модуле jsdom для nodejs - PullRequest
0 голосов
/ 31 октября 2018

Я использую следующий код для вызова некоторых вещей после нажатия элемента на странице

var http = require('http');
var fs = require('fs');
var jsdom = require('jsdom');

http.createServer(function(req, res) {

    res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});
    var document = new jsdom.JSDOM('<!doctype html><html><head></head><body><p>Text</p></body></html>').window.document;
    document.getElementsByTagName('p')[0].addEventListener('click', function() {
        alert('OK');
    });     
    var page = '<!doctype html><html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>';
    res.end(page);

}).listen(80, 'localhost');

Но если я нажму на абзац, ничего не произойдет

Я прочитал ответ по ссылке https://stackoverflow.com/a/36804251/10587062, но не понял, как решить мою проблему

1 Ответ

0 голосов
/ 31 октября 2018

Вы подключаете обработчик click на сервере , но вы щелкаете по элементу на клиенте .

Вместо этого вам необходимо отправить код сценария клиенту, который подключает обработчик событий к элементу DOM, который отображает браузер, для обработки щелчка и отображения предупреждения (что также относится к клиентской части). (Это означает, что вам не нужен JSDom; он предназначен для манипуляций с DOM & mdash; например, веб-очистка & mdash; на стороне сервера.)

...