【发布时间】:2014-01-05 18:47:41
【问题描述】:
我正在抓取一个使用 socket.io 来填充一些选择标签选项的页面。在评估页面之前如何等待套接字接收数据?我正在使用casperJS
套接字代码(由目标站点加载):
socket.on('list', function (data) {
$.each(data.match_names, function (id, name) {
if (some condition) {
/*nothing*/
} else {
if (typeof( varname ) == 'function') {
$('#myselector').append('<option value="' + id + '">' + name + " " + get_tournament_name(id.substr(0, 4)) + '</option>');
} else {
$('#myselector').append('<option value="' + id + '">' + name + '</option>');
}
match_count++;
}
});
我检查 socket.io 脚本是否已加载:
casper.waitForResource("socket.io.js", function() {
this.echo('socket.io has been loaded.'); //is printed
//how can I check that data has arrived from 'socket.on('list', function (data)' ?
});
但是选项标签不在页面上,大概是因为我评估页面太早了
casper.then(function() {
baseTargetUrl = this.evaluate(function() {
return __utils__.getElementByXPath('//*[@id="wrapper"]/div[1]/a[2]')["href"];
});
console.log('logging: '+baseTargetUrl); // works
casper.thenOpenAndEvaluate(baseTargetUrl ,function() { //baseTargetUrl is no longer undefined, it's a closure now
$(function(){ // DOM is ready
var myOptions = [] ;
$('select#myselector option').each(function(){
myOptions.push( $(this).text() + ' : '+$(this).val() ); //additional options have not yet been added
});
});
});
});
【问题讨论】:
标签: javascript casperjs