jsdom: парсинг в смешанном регистре

Я использую jQuery с jsdom (0.2.10). По какой-то причине node.exe (0.6.5.1) никогда не возвращается при работе с HTML, таким как этот:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></HEAD>
  <body></BODY>
</HTML>

Код разбора:

var request = require('request'),
    jsdom = require('jsdom');

request({ uri:'http://localhost/test.html' }, function (error, response, body) {
  jsdom.env({
    html: body,
    scripts: ['http://code.jquery.com/jquery-1.7.1.min.js'],
    done: function (err, window) {
      var $ = window.jQuery;  
      console.log('node.exe should get terminated after this line but does not.');    
    }
  });
});

Использование одного и того же регистра для имен тегов работает должным образом (т. е. возвращается node.exe). Но поскольку я не контролирую HTML, который я анализирую, мне интересно, есть ли способ обойти эту проблему. Кроме того, body.toLowerCase() помогает завершить работу node.exe, однако это нежизнеспособное решение, потому что мне нужно сохранить исходный регистр текстовых узлов.

Спасибо.


person geca    schedule 20.12.2011    source источник
comment
Можете ли вы привести пример кода jsdom, который вы используете?   -  person loganfsmyth    schedule 20.12.2011
comment
Вероятно, это исправлено в последних версиях jsdom; мы сделали существенные обновления синтаксического анализа HTML.   -  person Domenic    schedule 10.09.2013


Ответы (1)


Ошибка в модуле node-htmlparser. Разбор

<html><head></head><body>foo</body></html>
<html><head></HEAD><body>foo</BODY></HTML>

дает разные результаты для каждой строки.

Вот мой запрос на включение для тех, кто заинтересован.

person geca    schedule 27.12.2011