Wednesday 15 September 2010

javascript - Zombie + NodeJS + Express - Errors while working with tabs -



javascript - Zombie + NodeJS + Express - Errors while working with tabs -

i'm building little application using zombie.js, tabs dont seem work properly. current code follows:

class="snippet-code-js lang-js prettyprint-override">// libs used var zombie = require("zombie"); var assert = require("assert"); var http = require('http'); var express = require('express'); var bodyparser = require('body-parser'); // server port , host configs var server_port = 7777; var server_ip_address = '127.0.0.1' var app = express(); var httpserver = http.server(app); app.use( bodyparser.json() ); // back upwards json-encoded bodies app.use( bodyparser.urlencoded() ); // back upwards url-encoded bodies // o navegador var browser = null, result = "", site_url = 'http://en.wikipedia.org/wiki/programming_language'; app.get('/', function (response, request) { console.log('get request received.'); console.log('opening new tab: ' + site_url); // opens tab browser.open(site_url); // gets page content result = browser.html('#content'); console.log('tab open: '+browser.tabs.index); console.log('content: '+result); request.send(result); }); httpserver.listen(server_port, server_ip_address, function() { console.log('listening on ' + server_ip_address + ':' + server_port); // creates browser. browser = new zombie(); });

but browser.html('#content'); returns nothing. seems me tabs open, when seek extract info current open tab, using browser object, never works. doing right way? whats 'right way' of working tabs in zombie 2.0.8 ? cant find information/tutorial , oficial docs arent clear plenty me.

edit:

as pointed p.scheit, open(url) not enough. heres main resulting code:

class="snippet-code-js lang-js prettyprint-override">app.get('/', function (request, response) { console.log('get request received.'); if (request.query.url && request.query.selector) { console.log('opening new tab: ' + request.query.url); browser.open(request.query.url); browser.visit(request.query.url, function () { result = browser.html(request.query.selector); console.log('loaded tab content. sending user...'); response.send(result); }); console.log('tab open: '+browser.tabs.index); } else if (request.query.tabid && request.query.selector) { var tabid = request.query.tabid; if (tabid < browser.tabs.length) { browser.tabs.current = tabid; console.log('retrieving content of tab '+tabid+", sending user..."); result = browser.html(request.query.selector); response.send(result); } else { console.log('tab not found!'); response.send('tab not found!'); } } else { console.log('supply either [(the tab id) , (search selector)] or [(the url visit) , (search selector)]!'); response.send('supply either [(the tab id) , (search selector)] or [(the url visit) , (search selector)]!'); } });

after running server, open tabs:

$ curl "http://127.0.0.1:7777/?url=http://en.wikipedia.org/wiki/programming_language&selector=h1" $ curl "http://127.0.0.1:7777/?url=http://stackoverflow.com/users/3739186/cyberpunk&selector=h1" $ curl "http://127.0.0.1:7777/?url=http://www.google.com.br&selector=a"

data tab 0:

$ curl "http://127.0.0.1:7777/?tabid=0&selector=a"

just guessing wildly here: did seek using visit after opening tab? i'm not quite sure if zombie requesting site when pass url open.

javascript node.js zombie.js

No comments:

Post a Comment