Newsgroup: it.comp.lang.javascript
Titolo: cambio proprietà NN 4

Perchè non funziona?Dove sbaglio?
<html>
<head>
<script language="JavaScript" type="text/JavaScript">
<!--
function swap(){
document.layers['livello'].visibility="hidden";
}
//-->
</script>
</head>
<body>
<div name="livello" style="position:absolute; left:50px; top:50px;
width:250px; height:150px; z-index:1; background-color: #FF0000;
layer-background-color: #FF0000; border: 1px none #000000;"
onMouseOver="swap()">PROVA</div>
</body>
</html>


Te lo spiegheranno meglio altri,
comunque con NN4.x devi usare <layer....
allora và

 document.all['livello'].visibility="hidden";
Ehm... per questi ultimi ci va style:
document.getElementById('livello').style.visibility = "hidden"
document.all('livello').style.visibility = "hidden";
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
Per rispondere: togli il PUNTO e metti un .

 onMouseOver="swap()"
Il tag <DIV> in NS4 non supporta l'evento onmouseover.
Maurizio.

 :-)
Non nego assolutamente :-))
p.s.
Ho mandato on-line il menu stamattina


 top="50" bgcolor="#FF0000"></layer>
Povero Netscape4... cosě odiato e sottovalultato....: )
Io ho sempre usato felicemente i tag <DIV> e <SPAN> e mi sono risparmiato
tutte le rogne con i <LAYER>, che secondo me sono una complicazione inutile,
visto che ogni <DIV> e <SPAN> con posizione assoluta, o al piů relativa č
alla fine assimilabile ad un <LAYER>, nel suo comportamento... ;.)
Au revoir.
Đarius.
www.darius.it

 Il tag <DIV> in NS4 non supporta l'evento onmouseover.
Da quando? ;-)
Mai provato a scrivere questo?
oggettoLayer.captureEvents(Event.MOUSEOVER);
;-)
Bye.
Šarius.
www.darius.it

 alla fine assimilabile ad un <LAYER>, nel suo comportamento... ;.)
Nel comportamento puo' anche darsi, nell'efficienza di renderizzazione 
non sempre. Talvolta NS4.x si trova piu' a suo agio con i layer definiti 
tramite i suoi tag appositi.
Anche io cerco sempre di usare i div laddove posso, al piu' creo dei 
layer al volo.
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 oggettoLayer.captureEvents(Event.MOUSEOVER);
Questione, per me, spinosa senza poter fare i famosi impossibili test di
tutti i ns4.x su tutte le piattaforme.
Secondo la reference della stessa Netscape l'oggetto layer e' creato dai tag
layer e ilayer, e il metodo captureEvents e' proprio degli oggetti window,
document e layer.
Altro esempio, a memoria e posso sbagliare, e' l'evento onclick che non
risulta supportato dal tag image ma su windows, perlomeno con ns4.7, ha
sempre funzionato.
Quanto, citando il tuo post precedente, un div e' assimilabile ad un layer?
Anche io supporto ancora felicemente ns4, uso div e span se possibile, ma in
questo caso avrei risposto come Maurizio (magari solo carenza di
informazioni: accetto smentite speranzoso).

 Da quando? ;-)
Dovrebbe bastare provare:
    <div onmouseover="..." ...>
e vedere se funziona.
In ogni caso, la documentazione Netscape sui layers (dynhtml.zip) nel file
layer32.htm cosģ recita:
    OnMouseOver, OnMouseOut
    These attributes only apply to the <LAYER> tag.
Maurizio.

 layer32.htm così recita:


 documentazione per netscape?Magari proprio la versione 4.
http://developer.netscape.com/docs/manuals/index.html?content=javascript.htm
l
Maurizio.

 identico a quello di ieri. Sarà meglio dargli una controllata? ;)
... quando sono co*****one invece del tuo ho mandato on-line quello 
della cartella superiore... :-)))


 alla fine assimilabile ad un <LAYER>, nel suo comportamento... ;.)
Idem, ma personalmente sono stato obbligato ad usare LAYER solo in un 
contesto: quando dovevo scriverli con document.write(), il DIV non 
veniva proprio creato


 ;-)
Penso intendesse che non supporta la definizione dell'event handler da 
tag HTML, cosa che invece il tag <layer> fa benissimo.


 veniva proprio creato
Dunque.... fammi capire... tu scrivi un <DIV> usando document.write(), e non
ti funziona? :)
Ora che ci penso.... sul  mio libro c'č proprio un esempio che affronta
questo problema... ;-)
Si tratta effettivamente di un bug di N4, e per non usare un tag <LAYER>, si
puņ usare un layer fittizio, vuoto, all'inizio del documento, tipo questo:
 <div id="fittizio"
style="position:absolute;left:0;top:0;width:0;height:0;visibility:hidden;"><
/div>
dopodiché puoi inserire al volo tutti i <DIV> che vuoi con i
document.write() e pace... :)
Bye.
Šarius.
www.darius.it

     These attributes only apply to the <LAYER> tag.
Ma i tag con position:absolute vengono poi considerati layer da NS4.x, 
quindi e' possibile catturarne gli eventi.
Sempre sul sito della Netscape, si posso trovare diversi articoli, 
documentazione ed esempi riguardo questo argomento.


 può usare un layer fittizio, vuoto, all'inizio del documento, tipo questo:
Mhm. Questa domanda la pongo sia a te che a Riccardo: Ma se io devo 
scrivere dinamicamente un layer tramite document.write(), perche' usare 
l'arteficio di un div fittizio, e non scrivere direttamente il tag LAYER 
per NS4?


 informazioni: accetto smentite speranzoso).
Si tratta in ogni caso di bug... tutto dipende da come si impara a risolvere
i problemi... alcune persone suggeriscono di usare i <LAYER> in questi casi,
altre di mirare direttamente al bug specifico, con altri   workaround più o
meno noti.
In ogni caso c'è da scegliere..
A presto.
Ðarius.
www.darius.it

 tag HTML, cosa che invece il tag <layer> fa benissimo.
Si, ma anche quelli di Netscape, perņ..........  non penso che si sarebbero
proprio spaccati la schiena ad aggiungere questa cosa anche per i DIV e gli
SPAN........... :)
Ciau! :)
Šarius.
www.darius.it


Come dice ZER0, qui si intende che questi attributi funzionano a livello di
puro HTML e basta, con questo tag. Si possono invece fare le stesse cose
anche con DIV e SPAN, solo che gli eventi vanno attivati con captureEvents.
Bye.
Ðarius.
www.darius.it

 per NS4?
un <LAYER> lo devi aggiungere come copia di un <DIV>. Ogni eventuale
modifica al codice la devi quindi fare 2 volte.
Inoltre, finché si tratta di aggiungere al volo un layer unico, possiamo
dire non cambia molto: o aggiungi un <LAYER> in più, oppure aggiungi un
<DIV> vuoto in più.
Se invece devi creare tanti layer al volo, anziché dover creare altrettanti
tag <LAYER>, crei un unico <DIV> fittizio, all'inizio e basta...
Bye.
Ðarius.
www.darius.it

 modifica al codice la devi quindi fare 2 volte.
No, forse non mi sono spiegato. Intendo quando devi scrivere tramite 
document.write() del codice HTML che definisce un layer.
A quel punto, posso benissimo fare:
document.write("<"+layertag+" id='mylayer'>blablabla</"+layertag+">");
Perche' devo cercarmi degli "accrocchi"?


 SPAN........... :)
Sai, penso che sia tutto relativo al core di Netscape, per com'e' fu 
scritto ai tempi. Probabilmente e' poco modulare.
Quindi, a livello di definizione tag, gli attributi del DIV sono quelli.
Solo che quando viene specificato un tag con posizione assoluta (non 
solo DIV o SPAN) esso assume nel "DOM" di NS4.x valenza di <LAYER>, e 
quindi a livello di codice ne eredita le caratteristiche.
Magari per rendere la cosa piu' funzionale, avrebbero dovuto riscrivere 
pesantemente parti di codice, e hanno visto che non gli conveniva, ma 
piuttosto puntare su un engine completamente nuovo (Gecko), mettendo nel 
contempo qualche toppa qua e la' su NS4.x :)


 che l'evento non puo' essere catturato su quell'oggetto.
Cos'è ora che ti ha fatto cambiare opinione sul senso delle mie parole?
Maurizio.

 Cos'è ora che ti ha fatto cambiare opinione sul senso delle mie parole?
I tuoi successivi post.


 e attivare l'ascolto dell'evento.
Scusate, ma perché insistete nell'attribuirmi cose che non ho detto. Se non
avete prestato attenzione, rispondevo a il corvo, che si lamentava che
    <div name="livello" ... onMouseOver="swap()">
non funziona.
Ho risposto che la causa di ciò era quel onMouseOver="swap()", non
supportato da NS4 all'interno del tag <div>. Non ho mai detto che i layers,
creati con <div> non supportassero gli eventi.
Non ero stato chiaro? Ora lo sono stato?
Maurizio.

Il tag <DIV> in NS4 non supporta l'evento onmouseover.
in effetti potrebbe essere interpretata con un certo margine di libertà...
:)
cmq ora è tutto chiaro :)
A presto.
Ðarius.
www.darius.it

 Non ero stato chiaro? Ora lo sono stato?
Mi associo a quanto detto da Darius nel suo post. Era altamente 
interpretabile, sebbene all'inizio l'avessi interpretata 
"correttamente", i tuoi post successivi mi avevano instillato il dubbio 
che tu intendessi tutt'altro.
Diciamo che la risposta che hai dato era parziale. Sarebbe stata 
sicuramente meno fraintendibile, se avessi aggiunto "ma e' possibile 
assegnare tale evento a livello di codice" come ha mostrato Darius. :)


 Perche' devo cercarmi degli "accrocchi"?
Perché, questo come lo chiami? :)
Anche questa che dici è una valida soluzione, forse è più veloce inserire un
layer vuoto all'inizio del documento e basta, piuttosto che inserire
variabili e complicare il codice JS, ma tanto il DHTML è tutta una serie di
accrocchi e workaround per far funzionare qualcosa che è alla base che
ancora non funziona.. :(
Au revoir.
Ðarius.
www.darius.it

 per NS4?
Eh, infatti io ho document.writato il layer :-)


 Scusate, ma perché insistete nell'attribuirmi cose che non ho detto. 
!!! Ma non ti stiamo attribuendo nulla mi pare :-)
Questo filone e' nato dalla mia risposta a Darius, che gli event-handler 
non funzionassero sul DIV con N4 lo sapevo anch'io (vedi il sorgente del 
menu a tendine per trovare implementata la soluzione doppio tag), ma 
dato che lo avevi già scritto tu... :-)


 sempre funzionato.
"sempre" non direi in effetti, il mio primo script "serio" (il gioco del 
15 che c'è nel sito) ho dovuto realizzarlo con onmousedown.
Non ricordo bene, ma all'epoca era N4 su Win95 e cmq visto che nella 
reference onclick non c'è fra gli event-handler ho sempre usato 
onmousedown da allora in poi.


 meno noti.
Personalmente io sono partito da un presupposto: N4 fa i layer con LAYER 
e dunque uso <LAYER> quando l'applicazine e' critica.
Altrimenti DIV e via.


 Solo dopo potrà funzionare... :)
Si, ma come la mettiamo con la documentazione in proposito che definire 
"farlocca" [(c) Zer0] e' dire poco?
E non sono solo io che lo dico, l'ho letto spesso su vari siti che 
trattano JavaScript, quello di Peter-Paul Kock tanto per citarne uno


 hanno dimestichezza con la OOP.
a) La OOP non c'entra una mazza (tu per creare un Array usi var x =new 
Array(); non e' OOP)
b) Non e' appannaggio di utenti evoluti, ma hai ragione quando dici che 
lo e' di persone che si studiano la reference. :) Cosa che *tutti* 
dovrebbero fare..


 onmousedown da allora in poi.
E neanche onmousedown sarebbe supportato da image...

 "farlocca" [(c) Zer0] e' dire poco?
La documentazione non e' "farlocca" (non quella di Netscape).
Difatti se leggi un'altro mio post diretto a Maurizio, vedrai come ho 
detto che nello stesso sito (devedge), sempre riferito a Javascript ci 
sono documentazioni tecniche, articoli ed altro sull'uso degli eventi in 
JS1.2 che spiegano il discorso di questo thread.
La reference di JS non e' sempre "aggiornata" perche' si riferisce a 
JS1.3, cosa che supportano molte "versioni" di NS4.x, ma spesso con 
alcuni accorgimenti diversi (vedi l'onclick sul tag IMG e via dicendo). 
Ma sempre parser per JS1.3 rimane. Non e' lui che "cambia".
Per quello l'esperienza diretta sul campo e' essenziale. Oltre che 
leggere le documentazioni varie e aggiornamenti paralleli del sito, 
ovviamente. :)


 ancora non funziona.. :(
Ehe. :)


 Array(); non e' OOP)
Il "non e' OOP" e' legato cmq all'affermazione precedente. Da leggere: 
"La gente usa continuamente Array, e non per questo mi pare che debba 
avere dimestichezza con la OOP"  ;)


 avere dimestichezza con la OOP"  ;)
Piu' o meno era questo il senso :-)


 E neanche onmousedown sarebbe supportato da image...
Minchia... vero e'! :-O


 Piu' o meno era questo il senso :-)
Mhm? Ma non cambia il senso del mio post. La sintassi di Darius e' 
equivalente a creare un Array, non capisco perche' tu abbia tirato in 
ballo la OOP.
Era questo il senso. :)


 Era questo il senso. :)
Il "new" li per li mi ha fatto pensare alla creazione di un oggetto nel 
senso più generico del termine :-))
