Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[HTML] Generatore casuale di immagini Modificato
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
Paradoxical
Mortale pio
Mortale pio


Registrato: 03/07/07 21:48
Messaggi: 20

MessaggioInviato: 05 Lug 2007 04:31    Oggetto: [HTML] Generatore casuale di immagini Modificato Rispondi citando

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
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 05 Lug 2007 08:19    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Paradoxical
Mortale pio
Mortale pio


Registrato: 03/07/07 21:48
Messaggi: 20

MessaggioInviato: 05 Lug 2007 17:46    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 06 Lug 2007 08:52    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Paradoxical
Mortale pio
Mortale pio


Registrato: 03/07/07 21:48
Messaggi: 20

MessaggioInviato: 06 Lug 2007 16:01    Oggetto: Rispondi citando

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. Smile
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 06 Lug 2007 16:22    Oggetto: Rispondi citando

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 Smile
Top
Profilo Invia messaggio privato HomePage
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 09 Lug 2007 12:51    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 09 Lug 2007 12:55    Oggetto: Re: [HTML] Generatore casuale di immagini Modificato Rispondi citando

... 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
Profilo Invia messaggio privato HomePage
Paradoxical
Mortale pio
Mortale pio


Registrato: 03/07/07 21:48
Messaggi: 20

MessaggioInviato: 10 Lug 2007 06:20    Oggetto: Rispondi citando

horus: ancora no ._.
SverX: hai capito bene
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 10 Lug 2007 08:45    Oggetto: Rispondi citando

@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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 10 Lug 2007 11:04    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato HomePage
Paradoxical
Mortale pio
Mortale pio


Registrato: 03/07/07 21:48
Messaggi: 20

MessaggioInviato: 11 Lug 2007 15:12    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 11 Lug 2007 15:50    Oggetto: Rispondi citando

Paradoxical ha scritto:
Nick - ProvaZeus
Password - ********


non ti conviene scriverli in pubblico... Rolling Eyes
Top
Profilo Invia messaggio privato HomePage
Paradoxical
Mortale pio
Mortale pio


Registrato: 03/07/07 21:48
Messaggi: 20

MessaggioInviato: 11 Lug 2007 21:04    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 12 Lug 2007 09:13    Oggetto: Rispondi citando

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... Rolling Eyes

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 Smile
Top
Profilo Invia messaggio privato HomePage
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 12 Lug 2007 10:17    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Paradoxical
Mortale pio
Mortale pio


Registrato: 03/07/07 21:48
Messaggi: 20

MessaggioInviato: 13 Lug 2007 21:01    Oggetto: Rispondi citando

Vabbè, grazie mille lo stesso per averci provato ^__^
Sul mio foro il nuovo codice non pare funzionare nemmeno con IE comunque °_°
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 16 Lug 2007 09:17    Oggetto: Rispondi

Io l'ho provato su quello che mi hai dato per test e ha funzionato. Al limite prova a copiarlo da lì.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi