为了进一步解释标题,似乎jsdom似乎没有解析外部/内部javascript。不管怎样,或者我在这里完全遗漏了一些东西。
以下片段假设访问hulu并打印出search-container
div,我相信它是通过javascript动态添加到网站的。代码似乎不起作用。
我不明白为什么它不起作用。任何帮助,将不胜感激。
段:
var jsdom = require('jsdom');
var request = require('request');
var url = "http://www.hulu.com";
// Catch any errors.
process.on('uncaughtException', function (err) {
console.log('Caught exception: ' + err);
});
// Request page from server.
request(url, function(error, response, body) {
if (error) return;
if (!error && response.statusCode == 200) {
console.log("Loaded webpage, parsing");
jdom(body); // Parse page into jsdom
}
})
function jdom(body) {
var doc = jsdom.jsdom(body, null, {
features: {
FetchExternalResources : ['script'],
ProcessExternalResources : ['script'],
MutationEvents : '2.0',
}
});
var window = doc.createWindow();
jsdom.jQueryify(window, "http://code.jquery.com/jquery-1.5.min.js", function(window) {
//var $ = window.$;
var $ = window.jQuery;
var document = window.document;
console.log(window.$().jquery); // print jquery version
$(document).ready(function() {
//console.log( $('#search-container').html() );
setInterval(function() { // waitForElement()
console.log( $('#search-container').html() );
}, 2000);
});
});
}
结果是每2秒null
。
应该注意的是,在上面的代码运行几秒后就会发现异常。
例外:
Caught exception: TypeError: Cannot read property 'currentView' of undefined