Newsgroup: it.comp.lang.javascript
Titolo: Serpentone 2 - la vendetta!

Ciao a tutti,
ho ancora un paio di quesiti sul caro, vecchio javascript
che simula il serpentone di testo dietro al cursore del mouse.
1. Non è compatibile con Netscape 6 e Opera.
Avete qualche idea per renderlo compatibile?
2. Se lo schermo è diviso in frames,
il serpentone si spezza quando il mouse varca il confine tra i frames.
Ho già provato a caricare il javascript direttamente
nell'index che richiama i frame,
prima, dopo e durante l'istruzione frameset,
ma così facendo... non viene letto il frameset!
Qualcuno di voi ha idee
per rendere il serpentone continuo su tutto lo schermo
ignorando la divisione in frames?
Fatemi sapere, grazie!!!
MaRoK
PS: Se non avete più sotto mano il codice
ve lo copiaincollo qua sotto:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8">
<style type="text/css">
.spanstyle {color: black; font-family: Verdana; font-size: 10pt;
font-weight: bold; position: absolute; top: -50px; visibility: visible}
</style>
<script type="text/javascript">
var x,y
var step=20
var flag=0
var message="La mia scritta "
message=message.split("")
var xpos=new Array()
for (i=0;i<=message.length-1;i++) {
xpos[i]=-50}
var ypos=new Array()
for (i=0;i<=message.length-1;i++) {
ypos[i]=-50}
function handlerMM(e){
x = (document.layers) ? e.pageX : document.body.scrollLeft+event.clientX
y = (document.layers) ? e.pageY : document.body.scrollTop+event.clientY
flag=1}
function makesnake() {
if (flag==1 && document.all) {
     for (i=message.length-1; i>=1; i--) {
      xpos[i]=xpos[i-1]+step
   ypos[i]=ypos[i-1]}
  xpos[0]=x+step
  ypos[0]=y
  for (i=0; i<message.length-1; i++) {
      var thisspan = eval("span"+(i)+".style")
      thisspan.posLeft=xpos[i]
   thisspan.posTop=ypos[i]}}
  else if (flag==1 && document.layers) {
     for (i=message.length-1; i>=1; i--) {
      xpos[i]=xpos[i-1]+step
   ypos[i]=ypos[i-1]}
  xpos[0]=x+step
  ypos[0]=y
  for (i=0; i<message.length-1; i++) {
      var thisspan = eval("document.span"+i)
      thisspan.left=xpos[i]
   thisspan.top=ypos[i]}}
  var timer=setTimeout("makesnake()",1)}
</script>
</head>
<body onload="makesnake()" style="overflow-x: hidden; overflow-y: scroll;">
<script type="text/javascript">
for (i=0;i<=message.length-1;i++) {
    document.write("<span id='span"+i+"' class='spanstyle'>")
    document.write(message[i])
    document.write("<"+"/"+"s"+"p"+"a"+"n"+">")}
if (document.layers){
document.captureEvents(Event.MOUSEMOVE);}
document.onmousemove = handlerMM;
</script>
</body></html>

 tra i frames.
[cut]
lo script si basa sul tag body (document.body) e quindi nel frameset nn
va... non è possibile fare come dici tu (aspetto cmq, speranzoso, delle
smentite ;)
A presto!
--
Roberto e Alessandro Abbate
Moderatori di it.comp.www.html
http://www.Risorse.net
, 
http://MigliorHosting.it

smentite ;)
Eh... anch'io, anche perché un po' mi secca
richiamare il javascript in ogni nuovo frame in cui va,
è vero che richiamando sempre lo stesso file .js
dovrebbe rimanere in cache e non appesantire la pagina,
però concettualmente è un po' una schifezzuola...
Grazie cmq!
MaRoK

 Avete qualche idea per renderlo compatibile?
Questo e` un buon punto di partenza:
http://developer.netscape.com/evangelism/docs/articles/updating-dhtml-web-pages/
ma occhio che a Opera neanche ci pensano! Gran parte dei concetti pero` 
sono giusti: basta uscire dall'ottica "IE e NS, gli altri non esistono" 
e sei a posto.
--
A risentirci
\  Davide G. Borin
\\ !!Scudo anti-spam attivo!! Togliere le x e "eliminami" dall'indirizzo
\\\_____________________________________________________________________

 \  Davide G. Borin
Ho cercato nel contesto delle mie conoscenze tecniche di applicare questo 
legittimo principio: ricordi lo scambio di vedute sull'argomento?;  e per 
quanto mi e' possibile ho reso compatibile il sito di mia figlia 
www.sprot.it
 anche a browser non IE. 
Ciao
Antonio


www.sprot.it
 anche a browser non IE.
Ho appena provato con Mozilla 0.9.6 e funziona, anche se non posso dire 
di apprezzare il sistema di navigazione... Un buon passo avanti.


 ignorando la divisione in frames?
masochista, eh? :))
cmq lo script mettilo dentro uno dei frames, non nella pagina del frameset,
se possibile.
fai cmq gestire l'evento mousemove su tutti i frames, e poi, quando hai la
scritta che deve attraversare la linea di confine tra 2 frames, fai cmq
chiamare makesnake()... in qualche frame sembrerà che il mouse abbia
coordinate negative, ma non ti darà problemi la cosa e funzionerà cmq.....
c'è ovviamente da dedicarci qualche lungo minuto di cervello per fare sta
roba, ma..... se proprio non puoi rinunciare ai frames, e magari usare
layers al loro posto (cosa + consigliabile, imho), tecnicamente la cosa è
fattibile.
il risultato potrebbe avere qualche piccolo problema di fluidità, specie se
la stringa è troppo lunga e passi tra due frames che stanno uno sopra
l'altro anziché affiancati....
A presto e buon divertimento... ;-))
--
PS: correggere l'indirizzo email per rispondere....
< Bye.>
<<+Ðarius.->>                    .internet X3meS.
< 
http://www.darius.it
 >   .e-mail: in...@TdariusDOT.it
< ------------------------------------------------------------------- >

non nella pagina del frameset, se possibile.
Ah, per forza. Nella pagina del frameset non funziona...
Cmq, oltre che per evitare lo spezzamento del serpentone,
l'idea di richiamare il file js dal frameset
aveva anche lo scopo di generare una chiamata unica,
e non tante chiamate quante sono le pagine del sito
(IMHO è il vantaggio principale di usare i frames...
se no ne farei a meno!)
Ma se non si può fare pazienza!
Grazie, alla prossima!!!
MaRoK

 di apprezzare il sistema di navigazione... Un buon passo avanti.
A tuo giudizio come posso fare per migliorarlo? (va bene anche stravolgere 
tutto) 

 Ma se non si può fare pazienza!
puoi caricare un file .js in un unico frame - magari quello principale che
non ricarichi mai -, e poi chiamarne le funzioni dagli altri frames con un
parent.frames[x].funzione( ), ma è cmq un po' palloso, e devi fare le
funzioni prevedendo anche ciò...
A presto..
--
< Bye.>
<<+Ðarius.->>                    .internet X3meS.
< 
http://www.darius.it
 >  .e-mail: info(@T)darius(DOT)it
< ------------------------------------------------------------------- >

stravolgere tutto)
Una semplice barra di navigazione in alto o a sinistra con una tabella 
andrebbe benissimo. Poi puoi eliminare del tutto il JavaScript che crea 
tanti problemi.


tanti problemi.
E le sottoscelte come le realizzo?
Ciao

E le sottoscelte come le realizzo?
Nello stesso modo.
Puoi usare, per esempio, una barra in alto per le sezioni principali e 
una a sinistra per le sottosezioni.
