Newsgroup: it.comp.lang.javascript
Titolo: inibire back di explorer

Sto realizzando un test via web. Come posso fare a bloccare il tasto
"indietro" di explorer? Qualche Javascript?
Thanx
Secco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 "indietro" di explorer? Qualche Javascript?
No, credo che neanche IE ci riuscirebbe...
Forse un modo puo' esserci: fare in modo che si vada in un altra pagina
senza metterla nell'history del browser e quindi il tastino non sarebbe
nemmeno cliccabile...
pero' bisogna saperne un po' di piu' e vedere se e' applicabile...

 pero' bisogna saperne un po' di piu' e vedere se e' applicabile...
Uhm... non sono molto esperto di js, devo trovare un po' di
documentazione...


Io tempo fa ho trovato un sito che non faceva andare indietro... ma se dite
cosě mi fate pensare che ci fosse qualche bel trucchetto che
all'apparenza....

 documentazione...
http://devedge.netscape.com/central/javascript/
Vai su Javascript 1.3 Reference; cerca il metodo replace() dell'oggetto
location.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
I feel like I'm diagonally parked in a parallel universe.

 location.
thanx!


 location.
Ho trovato:
http://devedge.netscape.com/library/manuals/2000/javascript/1.3/reference/location.html#1194240
Per quel che capisco dovrebbe essere qualcosa tipo:
<SCRIPT>
location.replace(
www.tin.it
)
</SCRIPT>
magari al posto di tin metto lo stesso url della pagina (oppure #, o
altro).
Ma non fuziona!
p.s.
Ho provato anche location.replace="
http://www.virgilio.it/
"


 "indietro" di explorer? Qualche Javascript?
Ok, cosě nascondo una pagina (quella in cui inserisco lo script non appare
nel back):
<script>
window.location.replace("
http://tin.virgilio.it/
")
</script>
Ma come faccio a cancellare il resto delle pagine in back (in modo da
rendere il pulsante non attivo)?
bye


HELP!
Perchè mi funziona
<script>
window.location.replace("
http://tin.virgilio.it/
")
</script>
e non
<a href="
http://www.yahoo.com
"
onClick="javascript:window.location.replace(
http://tin.virgilio.it/
)">HOME</a>
???



onClick="javascript:window.location.replace(
http://tin.virgilio.it/
)">HOME</
a>
Mii, rilassati un secondo e fai un respiro...
Non hai messo gli apici o le virgolette "escapate"...
<a href="
http://www.yahoo.com
" onclick=
"location.replace('
http://tin.virgilio.it
');return false">
HOME</a>
<a href="
http://www.yahoo.com
" onclick=
"location.replace(\"
http://tin.virgilio.it
\");return false">
HOME</a>
e poi metti il return false per non far continuare l'azione...
perche' altrimenti cercherebbe anche di andare in yahoo.com...

 rendere il pulsante non attivo)?
Ehh, ciao! E poi cos'altro vuoi togliere...
Si riesce a fare questo con i link del tuo sito ma a partire da quando uno
ci va', tutto quello che ha visitato in precedenza ci DEVE rimanere!
Forse si puo' risolvere anche in un altro modo, ma se non ti decidi a dire
qual e' il tuo problema...

 qual e' il tuo problema...
Grazie sei un amico! (notevole poterlo dire a uno che non ho mai visto...)
<a href="
http://www.yahoo.com
" onclick=
"location.replace('
http://tin.virgilio.it
');return false">
HOME</a>
Funziona (ma a che serve il link a yahoo se poi va su virgilio?), ma
purtroppo non basta. Sto facendo la mia tesi di laurea (filosofia! Test su
psicologia cognitiva) e ho realizzato un sito in locale con php e mysql.
Devo registrare i dati degli utenti. Dato che alcune di queste pagine sono
dei test di memoria devo evitare che gli utenti possano tornare indietro
(ripeto, il sito è in locale). Toglierò la barra di explorer, ma per gli
utenti più esperti vorrei proprio impedire il back. Uhmm, con questa
soluzione dovrei inserire questo script in tutti i link del sito: nooooooo!
Avreste altre idee per un povero newbie js?


> Avreste altre idee per un povero newbie js?
Ma come faccio a mettere nella memoria back un url piuttosto che un altro?
Considerato un percorso del tipo a-b-c-d-e se voglio che arrivati a d non
si possa tornare a c posso mettere nella memoria del back una pagina con
uno script che riporta a d. Cosě almeno intralcio un po'.
Soluzione un po' zozza perň...


 Avreste altre idee per un povero newbie js?
E siamo qui apposta ;)
Sicuramente visto che usi php, puoi fare in tanti modi, pero'
dipende dalle tue conoscenze! Ci sono ad es. da sfruttare le
variabili di sessione....
Oppure puoi fare il tutto in un unica pagina e poi boo...

 uno script che riporta a d. Così almeno intralcio un po'.
Senti, ma di' a quelli che fanno il test se per favore non rompono le palle...
Minacciandogli una lobotomia, non lo so vedi tu... :)

Affetto e stima eterna mi legheranno a quest'uomo. Ho affisso un poster
con lettere PS nella mia stanza.
Soluzione eccellente quella di levare barre e controbarre ma, alt! Sto
pensando adesso che la pagina vecchia sotto rimane aperta. Dovrei dunque
fare un javascript per chiudere quella; solo che mi sembra che IE chieda
l'autorizzazione... uhm...il problema persiste...
Posso abusare della tua pazienza?


 l'autorizzazione... uhm...il problema persiste...
Infatti, pare che per fargli chiudere la finestra principale siano
necessari i permessi UniversalBrowserWrite, mi sembra una cosa un po'
complessa...


Se cerchi trovi un workaround per IE, anche se sfrutta una falla che si
spera sarà corretta nella prossima release.
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M. -- 

 spera sarà corretta nella prossima release.
Ah, ah sono aperte le scommesse :)

 Posso abusare della tua pazienza?
Pero' promettimi il poster :)
E anche di farmi fare questo test, perche' sono curioso e prometto che la
prima volta lo faccio senza barare :P

 prima volta lo faccio senza barare :P
Accetto e rilancio: non più poster nella mia stanza ma su tutta la
facciata del mio palazzo!
bye!


 (navigazione) dovrebbe rimanere...
Puoi usare il location.replace(), solo per le pagine che vuoi che non
vengano inserite nell'History, in tal modo il tasto back rimane attivo per
le pagine precedenti a quelle interessate.
Rimane sempre il fatto che, essendo tecnologia Javascript, puo' essere
disabilitata, e quindi aggirata facilmente.
Ti consiglio quindi, di optare per una soluzione server side, giacche' usi
PHP. Lato server, puoi fare un sacco di cose interessanti in tal senso. Ad
esempio, puoi tener traccia del "percorso" che sta facendo l'utente in modo
da evitare che possa "saltare" da una pagina all'altra. Inoltre, puoi far
da subito scadere le pagine inviate, in questo modo non solo non vengono
cachate ma se l'utente prova a fare "back" il browser gli avverte che la
pagina che cercano e' scaduta, e che non puo' recuperarla dalla cache.
Cosi' devono forzatamente richiederla al server; ma se tu tieni traccia del
percorso, il tuo applicativo PHP si accorge che l'utente sta cercando di
ottenere una pagina precedente a quella a cui era giunto, e lo blocca.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Se potete leggere questo, la mia donna e' caduta.
(Letta sul retro di una maglietta di un motociclista)

 pagina che cercano e' scaduta, e che non puo' recuperarla dalla cache.
No, devo contare quante pagine vedono (misura efficienza navigazione); le
pagine non caricate non potrei contarle.
Insomma, mi sembra che, se non posso svuotere la cache history con un
unico script (non uno per link) dovrò utilizzare la finestra senza alcuna
barra.
Thanx


 barra.
Non servira' a nulla.
Ad esempio, si puo' sempre tornare indietro con il backspace.
Ti ripeto: per questo genere di problematiche, l'approccio migliore e'
quello server-side.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Io non soffro di pazzia, ne godo ogni minuto.
(I don't suffer from insanity, I enjoy every minute of it)

 Son solo di passaggio,
 ho letto di sfuggita questo "3D",
 ho scritto il codice di getto e non l'ho provato ma forse questo è quello
che cerchi.
dovresti includere queste righe in ogni pagina che non vuoi nella history.
(ovviamente se hai esigenze particolari dovresti articolare meglio il
codice)
 for(i=0;i<window.document.all.tags('A').length;i++){
window.document.all.tags('A')[i].href="javascript:{location.replace(\'"+wind
ow.document.all.tags('A')[i].href+"\')}"
 }
spero di essere stato utile, se hai bisogno mandami una mail in privato
perchè non sono un abitudinario frequentatore di questo NewsGroup.
ciao a tutti
--
Francesco Maddalena (fm76)
     --------
   cell: 3494701290
   msn: 
fm...@libero.it
   url: 
www.fm76.it
     --------

  }
Non entro nel merito di cosa fa questa function perché non ho mai ragionato
con la history (IMHO non lo ritengo corretto come comportamento, preferisco
evitare problemi a priori lato server), però quanto sopra, senza offesa, fa
venire i peli dritti:
Stai ciclando la collection all (proprietaria di IE) per cercare tutti i
tags A, quando esiste la collection anchors che funziona anche con i browser
di Carlo Cudega (basta ricordarsi di assegnare il name all'anchor)...
Un po' più crossbrowser dovrebbe quindi essere un qualcosa del tipo (ripeto:
senza entrare nel merito della soluzione):
  for(var x=0;x<document.anchors.length;x++)
document.anchors[x].href="javascript:document.location.replace('"+document.a
nchors[x].href+"')";


 nchors[x].href+"')";
Non avevo mai prestato attenzione alla differenza tra "tags('A')" e
"anchors" ed ora grazie al tuo intervento ho imparato un'altra cosa.
grazie


 quello server-side.
Grazie per la pazienza. Sono stato un po' incasinato, credo di dover fare
il test prestissimo. Farň qualche prova su quello che hai scritto, anche
se adesso il mio problema piů importante č un altro. Vado appostare su php.
Ancora grazie saluti


 grazie
Prego, sempre felice di aiutare, soprattutto le persone gentili (ho riletto
il mio post, avendolo scritto un po' di corsa avresti potuto prenderlo per
aggressivo...in tal caso non voleva assolutamente esserlo, è solo la fretta)


 un grande passo avanti!
Ho provato tags e getElementsByTagName con le quadre ma non mi funge.
Mi potresti spiegare perchč son preferibili le quadre alle tonde?
Quali sono le differenze?


 Quali sono le differenze?
La quadra identifica un array e/o una collection per tutti i linguaggi
tranne vb...
Guarda qua:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods/getelementsbytagname.asp


>un grande passo avanti!
    Non riesco a trovare i benefeci e neanche una motivazione dell'uso delle
quadre piuttosto che le tonde.
    Forse non riesco ad intendere cosa vuoi dire.
    Mi daresti una mano a capire così da farmi fare "un grande passo
avanti!"?
Io uso _prevlentemente_ la quadra per contenere l'indice dell'array, ti
mostro un esempio di codice:
    var aDivs = document.body.getElementsByTagName("DIV"); //qui le tonde
(le quadre non funzionerebbero)
    var aDivs = document.body.getElementsByTagName("DIV")[0]; //qui le
quadre (anche se funzionerebbero le tonde)
    var aAnchor = anchors[32]; //o anche anchors(32)
comunque ho come riferimento il .CHM di Microsoft Script Editor (o
msdn.microsoft.com
);


     var aAnchor = anchors[32]; //o anche anchors(32)
Come sopra: non credo le tonde funzionino con altri browser


 qua...
Perfetto, grazie :)
