Newsgroup: it.comp.lang.javascript
Titolo: recuperare elementi img da documento e da stringa

hola a tutti,
quel che devo fare e' di popolare due array, il primo (window.onload) 
che contiene tutte le path delle immagini della pagina visualizzata, ed 
il secondo (da sringa) deve contenere le path delle immagini (qualora ce 
ne siano).
come faccio sta cosa?
-- 
vox

 ne siano).
eh?
il primo contiene i path delle immagini e il secondo anche?
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 il primo contiene i path delle immagini e il secondo anche?
^_^
allora, devo collezionare tutte le immagini di una pagina "master" e 
mandarle in preload prima che la pagina venga visualizzata. questo e' il 
primo array che desidero popolare.
poi clicco su un link e con ajax carico una pagina (scrivendola in una 
stringa) in un div del documento master, e devo preloadare anche le 
immagini della pagina chiamata prima di visualizzarla.
solo ke mentre nel primo caso posso popolare l'array (credo eh!) con 
document.getElementsByTagName('img') (giusto?).. nel secondo non so come 
fare poiche' non si tratta di un document ma di una stringa.
-- 
vox

 fare poiche' non si tratta di un document ma di una stringa.
carichi i path con una regexp. così al volo mi viene da scrivere (ma va
testata bene)
 /<img\s.*src=['"](^"')+/gi
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 ed inoltre non loopa nella stringa ma si ferma al primo risultato!
manca il g(global), hai messo solo i(case-insensitive) ...
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 
http://www.miosito.it/immagine.jpg
ci sono un po' troppe parentesi ...
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:match
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 manca il g(global), hai messo solo i(case-insensitive) ...
giusto, ora loopa correttamente.
grz!
devo lavorare sulla regex pero', perche' ottengo tutto il tag img, non 
solo la src!
e qua casca l'asino ( io :D )
-- 
vox

 
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:match
mmmh..
rettifico cosi' ma non riesco a isolare la src :-/
sReg = /src=([\"|\'])(.+?[\.jpg|\.gif\|\.png])([\"|\'])/gi;
e sono un somaro in regex (s'era capito lo so!)
-- 
vox

 e sono un somaro in regex (s'era capito lo so!)
anzi cosi':
sReg = /src=[\"|\'](.+[\.jpg|\.gif\|\.png])[\"|\']/gi;
forse devo farci anche un replace togliendo tutto cio' che sta fuori 
dagli apici/doppi apici ?
o non sarebbe + intelligente matchare solo quel che c'e' tra apici/doppi 
  apici?
-- 
vox

 sReg = /src=[\"|\'](.+[\.jpg|\.gif\|\.png])[\"|\']/gi;
e così cosa ti restituisce?
-- 
"La realtà è un'illusione causata dall'assenza di alcool."
									      A.

 e così cosa ti restituisce?
src="...jpg",src='...gif'
esattamente cosi'!
-- 
vox

 esattamente cosi'!
se mi scrivi esattamente la stringa di test e la regexp/match usata faccio
2 test appena riesco.
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 /<img.+?src=([\"|\']?)(.+?[\.jpg|\.gif\|\.png])([\"|\']).*?>/i;
Non va bene. Hai totalmente frainteso il significato di "[" e "]".
Se vuoi estrarre l'attributo 'src' di img (assumento ottimisticamente che il
valore non contenga apici o doppi apici), puoi usare:
  /<img[^>]+src\s*=\s*['"](.+?)['"]/
Ad esempio:
 var re = new RegExp("<img[^>]+src\s*=\s*['\"](.+?)['\"]", "gi");
 var matchArr;
 while ( matchArr = re.exec(newContent) )
 {
    // matchArr[1] è l'URL
 }
Max

  }
funziona :)
l'ho scritto che sono un somaro in regex (e altro!)
ok, ora che ho matchArr[1] come posso popolare un array con i suoi 
valori e passarlo ad un'altra funzione?
abbi pazienza ma me la cavo meglio con php piuttosto che js, anche se ci 
sono diverse somiglianze!
:)
-- 
vox

 valori e passarlo ad un'altra funzione?
cosi' puo' andare?
var newImages = new Array();
while ( matchArr = re.exec(newContent) ) {
     newImages.push(matchArr[1]);
}
e popolo l'array newImages?
-- 
vox