2009-11-03 9 views
7

Desidero reindirizzare l'utente a una determinata pagina se lui/lei ha disattivato JavaScript. Ho provato questo codice:<noscript> reindirizzamento

<noscript><?php url::redirect('controller/method'); ?></noscript> 
// url::redirect is much like the location header 

senza alcun risultato ...

Come posso fare questo?

+0

Questo è un approccio piuttosto scadente per trattare con client non JS: http://icant.co.uk/articles/pragmatic-progressive-enhancement/ – Quentin

+0

Possibile duplicato di [Script di rilevamento No-Javascript + Reindirizzamento] (http : //stackoverflow.com/questions/9895012/no-javascript-detection-script-redirect) – BalusC

risposta

2

Non è possibile utilizzare il tag meta refresh quindi rimuoverlo utilizzando Javascript perché il browser è impostato per il reindirizzamento alla lettura del tag meta refresh ed è troppo tardi perché JS lo manipoli.

L'unico modo è quello di fare sia quello che Daniel ha suggerito, o per mostrare un collegamento quando non c'è Javascript:

<noscript> 
<a href="">Click here to continue</a> 
</noscript> 

Oppure si può provare a fallire con garbo: Do you plan for javascript being off?

+0

Non è necessario utilizzare JS per manipolare il tag ''. Viene ignorato se contenuto nel blocco '

5

Non esiste alcun modo per eseguire un reindirizzamento basato su se javascript è disabilitato. Perché non fare l'opposto - reindirizzare se javascript è abilitato?

<script> 
    window.location = "..."; 
</script> 
+0

Voglio impedire che una pagina venga visualizzata senza javascript ... qualche idea su come farlo? – yretuta

+1

È possibile caricare il contenuto della pagina con AJAX. Domanda: perché vorresti farlo? –

+0

perché la pagina è dipendente da javascript, un po 'come aggiungere una mappa di google al database – yretuta

19

Dal momento che le intestazioni sono già stati inviati, è necessario utilizzare standard di markup HTML:

<noscript> 
    <meta http-equiv="refresh" content="0;url=noscript.html"> 
</noscript> 

Cercando questo su Firefox e IE, sembra funzionare bene ... Con JavaScript abilitato, il tag <meta> viene ignorato. Quando è disabilitato, il browser reindirizza a noscript.html.

+0

Questa non è una soluzione completa. –

+2

Puoi spiegarci di più? – jheddings

+0

sebbene funzioni, i validatori odiano questo. noscript non può apparire nell'elemento head, meta non può apparire nell'elemento body. meta non può apparire nell'elemento noscript. XHTML 1.0 e HTML 4.0. – mauris

0

Aggiungi questo come il primo elemento nel vostro corpo, lo stile per adattarlo, e magari offrire un link all'interno di esso ad una pagina noscript:

<div onload="return false;"> 
    <!-- PAGE CONTENTS --> 
</div><noscript>JAVASCRIPT IS REQUIRED TO VIEW THIS PAGE</noscript> 

io uso un metodo più dettagliato di questo (che basicall lo fa apparire come una finestra di dialogo modale e carina) su pagine in cui un client non mi consente di usare mezzi più compatibili. Ho testato in IE6 + e tutti gli altri principali browser con grande successo.