Precedente :: Successivo |
Autore |
Messaggio |
Paradoxical Mortale pio

Registrato: 03/07/07 21:48 Messaggi: 20
|
Inviato: 05 Lug 2007 04:31 Oggetto: [HTML] Generatore casuale di immagini Modificato |
|
|
Salve a tutti, avrei bisogno di adattare un generatore casuale di immagini ad un'esigenza particolare. Questo è il codice che conosco:
Codice: | <script type="text/javascript"><!--
var ran=new Array();
ran[0]='<img src="indirizzo_immagine">';
ran[1]='<img src="indirizzo_immagine">';
ran[2]='<img src="indirizzo_immagine">';
var id=Math.round(Math.random()*(ran.length-1)); document.write(ran[id]);
//--></script> |
Mi trovo però in una situazione un po' particolare: dovrei utilizzarlo per randomizzare ad ogni refresh il bannerone presente in cima alla home del mio forum, tuttavia nel circuito in cui è hostato viene impostato segnalando l'immagine desiderata al sistema, che provvede autonomamente a posizionarlo nella giusta locazione (non posso quindi inserire direttamente il codice, ma solo un'immagine).
V'è anche tuttavia la possibilità di inserire del codice HTML separatamente sempre nella Home e quindi mi chiedevo se vi fosse un modo per dare al sistema una sorta di "segnalino" e poi fare il cambio di immagini mediante il codice presente qualche riga più sotto.
Ringrazio anticipatamente per l'attenzione ed eventuali suggerimenti. |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 05 Lug 2007 08:19 Oggetto: |
|
|
Se ho capito bene tu non hai accesso diretto al server quindi sono da escludere tutti gli script tipo asp, php e soci.
La soluzione del javascript quindi potrebbe essere l'unica praticabile, ammesso che tra l'html che ti consentono ci siano anche gli script.
Come tentativo io cercherei di trovare sul sorgente html della home del tuo forum un riferimento univoco all'immagine, ad esempio se il tag img ha un id o se è contenuto in un div o tabella o quant'altro con un id. Una volta trovato il javascript potrà essere praticamente quello che conosci modificandolo solo leggermente
Codice: | <script type="text/javascript"><!--
var ran=new Array();
ran[0]='indirizzo_immagine1';
ran[1]='indirizzo_immagine2';
ran[2]='indirizzo_immagine3';
var id=Math.round(Math.random()*(ran.length-1));
document.getElementById("banner").src = ran[id];
//--></script> |
Ipotesi basata sul fatto che l'immagine abbia un id e che questo sia banner, se trovassi l'id di un contenitore dell'immagine basterebbe modificare l'ultima riga per posizionarti sull'immagine.
Se proprio non trovassi nulla di meglio si potrebbe sempre ciclare sugli oggetti della pagina fino a trovare l'immagine (tu saprai sempre come si chiama) ma la prima soluzione sarebbe meglio perché più veloce.
Bada comunque che in questo modo stai delegando al client un compito che teoricamente non sarebbe suo (e cioè quello di decidere cosa c'è nella pagina) e il risultato può essere variabile; se ad esempio trovi uno come me non funzionerà perché di default ho gli script disabilitati. |
|
Top |
|
 |
Paradoxical Mortale pio

Registrato: 03/07/07 21:48 Messaggi: 20
|
Inviato: 05 Lug 2007 17:46 Oggetto: |
|
|
Ho trovato qualche id nel codice, ma non sono sicuro possa essere utile allo scopo: per chiarezza posterò la situazione del forum: Chat Adventure.
Come potete notare cliccando sul banner in alto viene dato il collegamento ad un'immagine che nel codice della pagina viene ripetuta più volte (all'inizio soprattutto) Codice: | http://chatadventure.forumfree.net/ | mentre in realtà il link all'immagine del banner dovrebbe essere Codice: | http://img55.imageshack.us/img55/4324/peterpangl3.jpg | (riferimento che si trova una sola volta nel codice finale della pagina)
Codice: | .header {background-image: url(http://img55.imageshack.us/img55/4324/peterpangl3.jpg); background-repeat: no-repeat; background-position: center; border: 0} .header_width {background-image: none; width: 800px} | (le occorrenze del primo non le riporto poichè sono molte e non ho idea di quale siano quelle che interessano ed in quali parti >_<)
Spero la situazione possa essere più chiara adesso |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 06 Lug 2007 08:52 Oggetto: |
|
|
Dunque, dando uno sguardo al sorgente non sembrano esserci id, inoltre la struttura è una serie di tabelle annidate. Si potrebbe navigare la struttura partendo magari dal body e poi andando avanti a firstChild ma se gli amministratori cambiano qualcosa (ad esempio la skin) molto probabilmente devi rifare tutto.
La soluzione alternativa che mi viene in mente è quella di cercare tra le immagini fino a trovare quella che ti interessa così da poterla sostituire.
Codice: | <script type="text/javascript"><!--
var ran=new Array();
ran[0]='immagine_1';
ran[1]='immagine_2';
ran[2]='immagine_3';
var id=Math.round(Math.random()*(ran.length-1));
var objs;
if (document.all) { objs = document.all.tags("IMG"); }
else if (document.getElementsByTagName) { objs = document.getElementsByTagName("IMG"); }
else if (document.layers) { objs = document.layers["IMG"]; }
for (var i=0; i<objs.length; i++)
{
if (objs[i].src == "http://img.forumfree.net/index_file/spacer.gif" && objs[i].alt == "Chat Adventure")
{
objs[i].src = ran[id];
i = objs.length;
}
}
//--></script> |
In pratica controlli tutte le immagini fino a che ne trovi una che sia spacer.gif e che abbia un certo attributo alt, quando la trovi metti quella che vuoi e hai finito.
Se puoi modificare il testo dell'alt come ulteriore miglioramento potresti assegnare una cosa del tipo bannerDaSostituire e modificare il controllo in
Codice: | if (objs[i].src == "http://img.forumfree.net/index_file/spacer.gif" && objs[i].alt == "bannerDaSostituire")
{
objs[i].src = ran[id];
objs[i].alt = "Chat Adventure";
i = objs.length;
} |
In entrambi i casi, se non trova l'immagine lascia quella che c'era prima. |
|
Top |
|
 |
Paradoxical Mortale pio

Registrato: 03/07/07 21:48 Messaggi: 20
|
Inviato: 06 Lug 2007 16:01 Oggetto: |
|
|
Mi spiace (davvero ç_ç) ma non pare funzionare.
Se guardi il codice della pagina adesso vedrai che l'ho inserito, ma a quanto pare non sortisce gli effetti desiderati. Attendo un'ultima risposta dopo di che mi metto il cuore in pace: non è la fine del mondo.  |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 06 Lug 2007 16:22 Oggetto: |
|
|
Paradoxical ha scritto: | Mi spiace (davvero ç_ç) ma non pare funzionare. |
no, perchè horus cerca l'immagine come inserita in un tag IMG, invece l'immagine è inserita come proprietà background della classe header nel CSS...
non so come si modificano le classi CSS in Javascript, quindi ripasso la palla a horus  |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 09 Lug 2007 12:51 Oggetto: |
|
|
No, non è il css il problema, anzi, quello lascialo lì così se percaso qualcosa non dovesse funzionare si vedrebbe l'immagine di base.
Il problema sta nel fatto che mi sono dimenticato un'indice nel ciclo correggi questa parte:
Codice: | if (objs[i].src == "http://img.forumfree.net/index_file/spacer.gif" && objs[i].alt == "Chat Adventure");
{
objs[i].src = ran[id];
i = objs.length;
} |
Dovrebbe funzionare. |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 09 Lug 2007 12:55 Oggetto: Re: [HTML] Generatore casuale di immagini Modificato |
|
|
... però Paradoxical diceva:
Citazione: | dovrei utilizzarlo per randomizzare ad ogni refresh il bannerone presente in cima alla home del mio forum, tuttavia nel circuito in cui è hostato viene impostato segnalando l'immagine desiderata al sistema... |
e penso si riferisse all'immagine:
http://img55.imageshack.us/img55/4324/peterpangl3.jpg
che viene dichiarata come sfondo del div nel CSS... |
|
Top |
|
 |
Paradoxical Mortale pio

Registrato: 03/07/07 21:48 Messaggi: 20
|
Inviato: 10 Lug 2007 06:20 Oggetto: |
|
|
horus: ancora no ._.
SverX: hai capito bene |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 10 Lug 2007 08:45 Oggetto: |
|
|
@SverX: ok, forse stiamo dicendo la stessa cosa in maniere differenti. Questa è la mia logica: nella pagina di Paradoxical c'è questo Codice: | .header {background-image: url(http://img55.imageshack.us/img55/4324/peterpangl3.jpg); background-repeat: no-repeat; background-position: center; border: 0}
[...]
<table class="header" width="100%" cellpadding="0" cellspacing="0"><tr><td width="100%"><a href="http://chatadventure.forumfree.net"><img alt="Chat Adventure" src="http://img.forumfree.net/index_file/spacer.gif" style="width:100%" height="200"></a><td style="position:relative;z-index:10" align="right"><!-- Banner --></table> | Se non si tocca nulla il client vede l'immagine di peter pan perché è lo sfondo della tabella (via css) e perché l'immagine spacer.gif è un'immagine trasparente 800x200 che la ricopre ma la lascia vedere.
Quello che io vorrei fare è sostituire l'immagine spacer contenuta nel tag img via js con una che non sia trasparente e che quindi si posizioni esattamente sopra peter pan in modo da coprirlo. Se js non va, non trova il riferimento o altro l'immagine spacer non viene sostituita e peter pan rimane visibile.
@Paradoxical: sulla tua pagina nello script manca ancora l'indice [ i ] alle righe 118 e 120 come avevo aggiunto nell'ultimo pezzo di script. A me in locale aveva funzionato, hai già fatto tutte le prove? Per verifica puoi anche mettere un alert('sono qui'); all'interno dell'if per accertarti del fatto che lo script ci passi, quando tutto funzionerà potrai poi toglierlo. |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 10 Lug 2007 11:04 Oggetto: |
|
|
horus ha scritto: | Quello che io vorrei fare è sostituire l'immagine spacer contenuta nel tag img via js con una che non sia trasparente e che quindi si posizioni esattamente sopra peter pan in modo da coprirlo. |
ah... capito... io pensavo che Paradoxical volesse sostituire l'immagine di PeterPan con altre... |
|
Top |
|
 |
Paradoxical Mortale pio

Registrato: 03/07/07 21:48 Messaggi: 20
|
Inviato: 11 Lug 2007 15:12 Oggetto: |
|
|
SverX ha scritto: | horus ha scritto: | Quello che io vorrei fare è sostituire l'immagine spacer contenuta nel tag img via js con una che non sia trasparente e che quindi si posizioni esattamente sopra peter pan in modo da coprirlo. |
ah... capito... io pensavo che Paradoxical volesse sostituire l'immagine di PeterPan con altre... | Infatti è così: ma in modo randomizzato, ad ogni refresh o cambio pagina..
@horus: abbiamo un problema °_° .. è il server che mi toglie automaticamente dal codice quella parte dell'indice ç_ç
Comunque ti ho creato un account:
Nick - ProvaZeus
Password - ********
Forum - LINK
Pagina modifica codice HTML (dopo login al forum) - LINK
I codici e le immagini sono già dentro.
Se non volete più andare avanti non importa: mi pare invero di aver già arrecato troppi disturbi °_°
Para |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 11 Lug 2007 15:50 Oggetto: |
|
|
Paradoxical ha scritto: | Nick - ProvaZeus
Password - ******** |
non ti conviene scriverli in pubblico...  |
|
Top |
|
 |
Paradoxical Mortale pio

Registrato: 03/07/07 21:48 Messaggi: 20
|
Inviato: 11 Lug 2007 21:04 Oggetto: |
|
|
ci si mette 30 secondi a creare un forum ed un profilo su forumfree : ed è quello il tempo che ho impiegato per mettere in piedi la cosa °_°
comunque se non si può gli mando un MP |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 12 Lug 2007 09:13 Oggetto: |
|
|
Paradoxical ha scritto: | ci si mette 30 secondi a creare un forum ed un profilo su forumfree |
ci si mette meno a distruggerlo sapendo la password...
Paradoxical ha scritto: | comunque se non si può gli mando un MP |
non è che non si possa... comunque è sicuramente meglio se gli mandi un MP  |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 12 Lug 2007 10:17 Oggetto: |
|
|
Dunque, il problema è che alcune parti di codice vengono sostituite in base a regole sconosciute.
Al momento ho messo a posto con qualche modifica per ie ma per ff non sono ancora riuscito a trovare un'alternativa.
Codice: | <script type="text/javascript">
<!--
var ran=new Array();
ran[0]='http://img525.imageshack.us/img525/715/bannersuperchiccheuw6.jpg';
ran[1]='http://img406.imageshack.us/img406/3695/bannerbeaviscd4.jpg';
ran[2]='http://img507.imageshack.us/img507/8815/bannerjackcorpsebridett8.jpg';
var id=Math.round(Math.random()*(ran.length-1));
var elenco;
var tagname = "IMG";
if (document.all) { elenco = document.all.tags(tagname); }
else if (document.getElementsByTagName) { elenco = document.getElementsByTagName(tagname); }
else if (document.layers) { elenco = document.layers; }
var indice;
var immagine;
for (indice=0; indice < elenco.length; indice++)
{
immagine = elenco[(indice)];
if (immagine.src == "http://img.forumfree.net/index_file/spacer.gif" && immagine.alt == "Prova Zeus")
{
immagine.src = ran[id];
indice= elenco.length;
}
}
// -->
</script> |
Rimane solo il problema che sostituisce document.getElementsByTagName(tagname); con document*getElementsByTagName(tagname);
e quindi ff non fa quello che dovrebbe, al momento non sono riuscito a trovare un'alternativa, se qualcuno conosce una altro modo per fare la stessa cosa.... |
|
Top |
|
 |
Paradoxical Mortale pio

Registrato: 03/07/07 21:48 Messaggi: 20
|
Inviato: 13 Lug 2007 21:01 Oggetto: |
|
|
Vabbè, grazie mille lo stesso per averci provato ^__^
Sul mio foro il nuovo codice non pare funzionare nemmeno con IE comunque °_° |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 16 Lug 2007 09:17 Oggetto: |
|
|
Io l'ho provato su quello che mi hai dato per test e ha funzionato. Al limite prova a copiarlo da lì. |
|
Top |
|
 |
|