рдЕрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдмрд┐рд▓рдХреБрд▓ рдиреЛрдб.рдЬреЗрдПрд╕ рдХреНрдпреЛрдВ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖ рддрдХрдиреАрдХ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рдерд╛ - рдЖрдк рдЬрд╛рд╡рд╛ / .NET рд╕реЗ рдкрд░реНрд▓ / рдкрд╛рдпрдерди рддрдХ рд╕реА ++ рд╕реЗ рд╕рдм рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдмрддрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВрдиреЗ рдиреЛрдб рдХреНрдпреЛрдВ рдЪреБрдирд╛ рд╣реИред js:
- рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ IO рд╕рдВрдЪрд╛рд▓рдиред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕реА рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╣реИ - рдПрдл # рдореЗрдВ рдПрдХ рдПрд╕рд┐рдВрдХреНрд╕ рдмреНрд▓реЙрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдиреЛрдб.рдЬреЗрдПрд╕ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рд╣реИред
- рдХрдо рд╕реЗ рдХрдо рдмреЗрдорд╛рдиреА рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ред рдмреЗрд╢рдХ, рдЖрдЗрдЯрдо "рд╕рдордЧреНрд░" рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд░реАрдм рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдПрдл # рдпрд╛ рдкрд╛рдпрдерди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реА / рд╕реА ++, рдЬрд╛рд╡рд╛, рд╕реА # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред
- рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ http рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░" рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
- рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ред рдпрджреНрдпрдкрд┐ V8 рдореЗрдВ "рдХрдордЬреЛрд░" рдмрд┐рдВрджреБ - рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдпрд╣ "рд╕рдВрдХреАрд░реНрдг рдЧрд░реНрджрди" рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ "рд░реИрдЦрд┐рдХ" рдЧрддрд┐ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдФрд░ V8 рд╕рд┐рд░реНрдл рдпрд╣ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ (рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдмреА рдПрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдмрдирд╛рддрд╛ рд╣реИ)ред
рдиреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ редjs
рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрдирд╛ (FreeBSD, amd64) рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдЪрд▓реА рдЧрдИ - "рд╕реАрдбреА / рдпреВрдПрд╕рдЖрд░ / рдкреЛрд░реНрдЯ / www / рдиреЛрдб; рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ" рдФрд░ рдиреЛрдб.рдЬреЗрдПрд╕ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕реБрд▓рдн рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рд╕рд╛рдЗрдмрд░рд╡рд┐рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред рдореБрдЭреЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВ .NET рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдиреЛрдб рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛ред
рдЙрдмрдВрдЯреВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрдЪреНрдЫрд╛ рдирд┐рд░реНрджреЗрд╢ ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдореИрдиреБрдЕрд▓ рдкрдврд╝рдирд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдиреБрдЕрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕реБрдВрджрд░ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореЗрд░рд╛ рд╡реЗрдм рдЦрд╛рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рддрд░рд╣ рд╣реЛ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕ рдореИрдиреБрдЕрд▓ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдФрд░ рдмрд╛рдж рдореЗрдВред
рдкреЗрдЬ рдЕрдирд▓реЛрдбрд░
Http.Client рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реБрдП рдФрд░ рд╕рдВрдкреВрд░реНрдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ, url рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд "рд╡рд░реНрдЧ" рдХреЗ рд╕рд╛рде рдЖрдП:
var webDownloader = function (sourceUrl) {<br>
events.EventEmitter.call( this );<br>
this .load = function (sourceUrl) {<br>
var src = url.parse(sourceUrl);<br>
var webClient = http.createClient(src.port==undefined?80:src.port,src.hostname);<br>
var get = src.pathname+(src.search==undefined? '' :src.search);<br>
sys.log( 'loading ' +src.href);<br>
var request = webClient.request( 'GET' , get ,<br>
{ 'host' : src.hostname});<br>
request.end();<br>
var miner = this ;<br>
request.on( 'response' , function (response) {<br>
// console.log('STATUS: ' + response.statusCode); <br>
// console.log('HEADERS: ' + JSON.stringify(response.headers)); <br>
response.setEncoding( 'utf8' );<br>
var body = '' ;<br>
response.on( 'data' , function (chunk) {<br>
body += chunk;<br>
});<br>
response.on( 'end' , function () {<br>
miner.emit( 'page' ,body, src);<br>
});<br>
});<br>
};<br>
}<br>
sys.inherits(webDownloader, events.EventEmitter); <br>
<br>
* This source code was highlighted with Source Code Highlighter .
var webDownloader = function (sourceUrl) {<br>
events.EventEmitter.call( this );<br>
this .load = function (sourceUrl) {<br>
var src = url.parse(sourceUrl);<br>
var webClient = http.createClient(src.port==undefined?80:src.port,src.hostname);<br>
var get = src.pathname+(src.search==undefined? '' :src.search);<br>
sys.log( 'loading ' +src.href);<br>
var request = webClient.request( 'GET' , get ,<br>
{ 'host' : src.hostname});<br>
request.end();<br>
var miner = this ;<br>
request.on( 'response' , function (response) {<br>
// console.log('STATUS: ' + response.statusCode); <br>
// console.log('HEADERS: ' + JSON.stringify(response.headers)); <br>
response.setEncoding( 'utf8' );<br>
var body = '' ;<br>
response.on( 'data' , function (chunk) {<br>
body += chunk;<br>
});<br>
response.on( 'end' , function () {<br>
miner.emit( 'page' ,body, src);<br>
});<br>
});<br>
};<br>
}<br>
sys.inherits(webDownloader, events.EventEmitter); <br>
<br>
* This source code was highlighted with Source Code Highlighter .
var webDownloader = function (sourceUrl) {<br>
events.EventEmitter.call( this );<br>
this .load = function (sourceUrl) {<br>
var src = url.parse(sourceUrl);<br>
var webClient = http.createClient(src.port==undefined?80:src.port,src.hostname);<br>
var get = src.pathname+(src.search==undefined? '' :src.search);<br>
sys.log( 'loading ' +src.href);<br>
var request = webClient.request( 'GET' , get ,<br>
{ 'host' : src.hostname});<br>
request.end();<br>
var miner = this ;<br>
request.on( 'response' , function (response) {<br>
// console.log('STATUS: ' + response.statusCode); <br>
// console.log('HEADERS: ' + JSON.stringify(response.headers)); <br>
response.setEncoding( 'utf8' );<br>
var body = '' ;<br>
response.on( 'data' , function (chunk) {<br>
body += chunk;<br>
});<br>
response.on( 'end' , function () {<br>
miner.emit( 'page' ,body, src);<br>
});<br>
});<br>
};<br>
}<br>
sys.inherits(webDownloader, events.EventEmitter); <br>
<br>
* This source code was highlighted with Source Code Highlighter .
рдпрд╣рд╛рдВ рджрд┐рд▓рдЪрд╕реНрдк рдпрд╣ рд╣реИ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрдХреНрд╖рд╛ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ EventEmitter рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ: рдШрдЯрдирд╛рдУрдВред EventEmitter.call (рдпрд╣);
- "рдЗрдирд╣реЗрд░рд┐рдЯ" EventEmitter рд╕реЗ рдПрдХ рд╡рд░реНрдЧ
- "рдПрдорд┐рдЯ" рдИрдорд┐рддреНрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдШрдЯрдирд╛
рдпрд╣ EventEmitter рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрднреА рднреА рдЦрд░рд╛рдм рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рд╕рд╛ Google рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдЕрдм рд╣рдо рдкреВрд░реНрдг рдкреГрд╖реНрда рд▓реЛрдб рдШрдЯрдирд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ:
var loader = new webDownloader();<br>
loader.on('page',vcardSearch);
VCard рдбреЗрдЯрд╛ рдЦреЛрдЬреЗрдВ
рдЕрдм рдПрдХ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдкреГрд╖реНрда рд╕реЗ vCard рдбреЗрдЯрд╛ рдЦреАрдВрдЪрддрд╛ рд╣реИред рдореИрдВ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдмрд╣реБрдд рд╕рдордп рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ "рдорд╛рдереЗ" рдХрд┐рдпрд╛ - рд╕рд╣реА рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬред
рдкреГрд╖реНрда рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдмрд╛рдиреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ htmlparser рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЦреБрдмрд╛рдиреА рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛)ред рдкрд╣рд▓реЗ рддреЛ рдореИрдВрдиреЗ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЦреБрдмрд╛рдиреА рдХреЗ рдЦреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ (рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЬрд╝рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЯреНрд░реИрд╡рд░реНрд╕ рддреЗрдЬ рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдп рдорд┐рд▓рд╛:
var vcardSearch = function (body,src) {<br>
sys.log( 'scaning ' +src.href);;<br>
Apricot.parse(body, function (doc) {<br>
var vcardClasses = [<br>
// required <br>
'fn' ,<br>
'family-name' , 'given-name' , 'additional-name' , 'honorific-prefix' , 'honorific-suffix' ,<br>
'nickname' ,<br>
// optional <br>
'adr' , 'contact' ,<br>
'email' ,<br>
'post-office-box' , 'extended-address' , 'street-address' , 'locality' , 'region' , 'postal-code' , 'country-name' ,<br>
'bday' , 'email' , 'logo' , 'org' , 'photo' , 'tel' <br>
];<br>
var vcard = new vCard();<br>
var scanElement = function (el) {<br>
if (el==undefined) return ;<br>
<br>
if (el.className != undefined && el.className!= '' ) {<br>
var classes = el.className.split( ' ' );<br>
for ( var n in classes) {<br>
if (vcardClasses.indexOf(classes[n])>=0) {<br>
var value = el.text.trim().replace(/<\/?[^>]+(>|$)/g, '' );<br>
if (value != '' ) vcard.Values[classes[n]] = value;<br>
}<br>
}<br>
}<br>
for ( var i in el.childNodes) scanElement(el.childNodes[i]);<br>
}<br>
scanElement(doc. document .body);<br>
if (!vcard.isEmpty())<br>
sys.log( 'vCard = ' +vcard.toString());<br>
else <br>
sys.log( 'no vCard found on ' +src.href);<br>
});<br>
} <br>
<br>
* This source code was highlighted with Source Code Highlighter .
var vcardSearch = function (body,src) {<br>
sys.log( 'scaning ' +src.href);;<br>
Apricot.parse(body, function (doc) {<br>
var vcardClasses = [<br>
// required <br>
'fn' ,<br>
'family-name' , 'given-name' , 'additional-name' , 'honorific-prefix' , 'honorific-suffix' ,<br>
'nickname' ,<br>
// optional <br>
'adr' , 'contact' ,<br>
'email' ,<br>
'post-office-box' , 'extended-address' , 'street-address' , 'locality' , 'region' , 'postal-code' , 'country-name' ,<br>
'bday' , 'email' , 'logo' , 'org' , 'photo' , 'tel' <br>
];<br>
var vcard = new vCard();<br>
var scanElement = function (el) {<br>
if (el==undefined) return ;<br>
<br>
if (el.className != undefined && el.className!= '' ) {<br>
var classes = el.className.split( ' ' );<br>
for ( var n in classes) {<br>
if (vcardClasses.indexOf(classes[n])>=0) {<br>
var value = el.text.trim().replace(/<\/?[^>]+(>|$)/g, '' );<br>
if (value != '' ) vcard.Values[classes[n]] = value;<br>
}<br>
}<br>
}<br>
for ( var i in el.childNodes) scanElement(el.childNodes[i]);<br>
}<br>
scanElement(doc. document .body);<br>
if (!vcard.isEmpty())<br>
sys.log( 'vCard = ' +vcard.toString());<br>
else <br>
sys.log( 'no vCard found on ' +src.href);<br>
});<br>
} <br>
<br>
* This source code was highlighted with Source Code Highlighter .
рдкрд░рд┐рдгрд╛рдо
рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИ:
loader.load('http://www.google.com/profiles/olostan');<br>
loader.load('http://www.flickr.com/people/olostan/');<br>
рдореИрдВ рддреБрд░рдВрдд рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЧрдВрднреАрд░ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрдВрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХреА рдЧрдИ рдереА, рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдмреВрдд рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдиреЛрдб рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдкреВрд░реНрдг рдХреЛрдб (Google рдбреЙрдХреНрд╕ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛, Google рдЦрд╛рддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ)
PS рдпрд╣ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдореЗрд░реЗ рдкреЛрд╕реНрдЯ рдХрд╛ рдПрдХ рд░рд┐рдкреЙрд╕реНрдЯ рд╣реИред рдЕрдЧрд░ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рд╕реБрдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж рд░реЛрдордЪреЗрд╡ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╡рд┐рд╖рдпрдЧрдд рдмреНрд▓реЙрдЧ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдХрд░реНрдо рдХреА рдХрдореА рд╣реЛрддреА рд╣реИред