Newsgroup: it.comp.lang.javascript
Titolo: Lightbox all'avvio


    </a>
</body>
</html>
<script type="text/javascript">
//-------------------------------------------------
//Aggiunge azioni all'evento Load
//
//Si può pure fare:
// addEvent(window, "load", func1, false);
// addEvent(window, "load", func2, false);
//-------------------------------------------------
function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function()
		{
			oldonload();
			func();
		}
	}
}
addLoadEvent(function(){ window.setTimeout(function(){$("a1").onclick
();},1)});
</script>
Come vedete, qui alla fine c'è questa "onclick()" che Firefox non
riconosce.
Grazie in anticipo per ogni dritta

 <script type="text/javascript">
e perché metti uno script dopo la chiusura dell'html?
Mettilo dentro l'head.

 Mettilo dentro l'head.
No, perchè così è garantito che viene prima caricata la libreria e poi
eseguito questo script

 eseguito questo script
direi che è garantito lo stesso, perché lo esegue window.onload ...
te l'ho consigliato perché è già capitato in questo newsgroup di vedere 
comportamenti strani, ed era causato per dei tag dopo la chiusura 
dell'html.


No. A me dà errore su una funzione (onclick) che sembrerebbe essere
javascript-base.
Mi dà lo stesso errore anche seguendo l'indicazione fornita nell'altro
link del mio primo post (che sono 3 righe 3 di codice e che ugualmente
usa la onclick).
Questa onclick, intuisco, dovrebbe "simulare" il click del mouse sul
punto referenziato.

 javascript-base.
boh ... quell'onclick non capisco bene cosa faccia.
A naso: $('a') restituisce un riferimento all'oggetto ... ma per invocare 
il click si usa .click() (ma non credo funzioni col tag anchor:
 
http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-2651361
), onclick definisce la funzione da eseguire (.onclick=function() {}).
https://developer.mozilla.org/en/DOM/element.onclick
Sentiamo chi sa qualcosa di questi pacchetti prefatti.

 ();},1)});
Ho dato un'occhiata rapida al tutto, e ti sei andato a impelagare in
una questione non da poco (solo perch� usi Prototype e Lightbox).
Non sono un esperto di Prototype e Lightbox; ma per farla breve, non
mi sembra tu possa fare quel che desideri, senza andare a modificare
il codice stesso di Lightbox (questo perch� Prototype non ha modo di
scatenare eventi nativi, ma solo custom).
In lightbox.js dovresti avere una riga tipo questa:
document.observe('dom:loaded', function () { new Lightbox(); });
Ecco, devi sostituirla con del codice che salvi l'istanza da qualche
parte (es. variabile globale):
var vjgerLightbox = null;
document.observe('dom:loaded', function () {
	vjgerLightbox = new Lightbox();
});
A questo punto nel tuo codice (non pi� in lightbox.js) puoi invocare 
direttamente i metodi di Lightbox:
addLoadEvent(function(){
	vjgerLightbox.start($("a1"));
});
(ammesso che $("a1") ritorni il target che serve al metodo start, in
caso cos� non fosse ci possiamo lavorare su).
Il codice non � testato, sono andato a naso, fammi sapere.
Il mio suggerimento, comunque, sarebbe provare a cercare qualcosa di
pi� flessibile per i tuoi scopi: non � mai una buona cosa modificare
gli script altri in questo modo, perch� nel caso in cui vuoi fare un
qualche "aggiornamento" perdi ogni volta le tue modifiche (e in caso
devi vedere se � possibile riapplicarle alla nuova versione).
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."

 devi vedere se è possibile riapplicarle alla nuova versione).
In effetti io sarei anche "disposto" a rinunciare a lightbox in favore
di qualcos'altro.
Oramai in quasi tutti i portali vieni "accolto" da una finestrella in
primo piano (che spesso opacizza la pagina sottostante).
Presumo sia fatta con div e css. So che questo è l'ng di javascript
ma, c'è comunque qualcuno che sappia come fare ciò?
Grazie


In linea generale, si tratta di posizionare un div con background nero
"davanti" a tutti gli altri elementi della pagina, impostare l'opacit�
e definire un timeout/interval per farlo apparire progressivamente.
Non � complicato di per s�, ma le impostazioni CSS dipendo dal tipo di
documento (quirks o standard), e anche dai browser. Quindi, per essere
sicuro, ti consiglio di usare qualcosa di gi� fatto.
Qui si rischierebbe di buttarti gi� del codice che magari mal si sposa
con il contesto in cui sei.
Se ti servisse aiuto per mettere insieme i pezzi, facci sapere dove ti
sei arenato che vediamo di darti una mano.


 Qui si rischierebbe di buttarti giù del codice che magari mal si sposa



Dunque. C'era un errorino...:) (lightBox e non lightbox)
Ma a parte questo, continua a non funzionare.
Ho preso la pagina di esempio che sta nello zip che si scarica da
jQueryLightbox e l'ho modificata così come segue
<script>
function pippo(){
	$(document).ready(function(){ // Attende di aver caricato il DOM del
documento prima di chiamare la funzione anonima
     // Attiva lightbox sull'elemento selezionato
     var tagA = document.getElementById('xyz');
     $(tagA).lightBox();
});
}
</script>
<body onload="pippo();">
Ho fatto la prova invece che con l'onload mettendo lo script dopo il
tag </html>
In entrambi i casi il tag <a> con id='xyz' non viene "cliccato"
al'ingresso nella pagina