2010-09-04 5 views
2

Je ne place aucune balise de script sur mon gabarit si un utilisateur n'a pas javascript activé ou si ses navigateurs ne supportent pas javascript il redirige vers une vue spécifique. im en utilisant ce codeProblème dans No tag

<noscript>  
    <% Response.Redirect("../UserLogin/Error"); %> 
</noscript> 

mais le problème est son me rediriger chaque fois que j'ouvre la page même si mon javascript est activé. Im utilisant asp.net mvc2 quel peut être le problème ou est-il un autre moyen de le faire?

Répondre

1

La balise noscript est évaluée dans le client (navigateur). Le serveur ne sait pas si le client a un support de script, donc chaque fois qu'il redirige.


EDIT

mieux expliquer: le serveur crée juste une chaîne (HTML) et l'envoyer au navigateur. Il n'analyse pas pour voir si le navigateur a un support de script.


EDIT 2

Vous pouvez utiliser la balise meta refresh. Voir:

<head> 
    <noscript> 
    <meta http-equiv="refresh" content="0;url=http://example.com/" /> 
    <!-- Redirect to http://example.com/ immediately --> 
    </noscript> 
</head> 

J'ai testé dans Firefox et fonctionne.

+0

Vous ne pouvez pas faire cela - "Cependant, vous ne pouvez pas utiliser' noscript' dans la 'tête 'fournir des alternatives pour les fonctions JavaScript, car cela impliquerait d'écrire du contenu dans l'élément head." - http://reference.sitepoint.com/html/noscript –

+0

@Jiang Désolé, mais j'ai testé maintenant et fonctionne. Au moins dans Firefox. Ce n'est pas un compilateur W3C, mais ça marche. :) – Topera

+0

Eh bien, je changerais mes mots pour "Vous * ne devriez pas * faire ça" alors;) –

3

Response.Redirect est exécuté du côté serveur et il envoie un code d'état 302 au navigateur qui redirigera automatiquement. Vous voulez sans doute:

<noscript>  
    Please enable javascript to use this site. 
</noscript> 
+1

+1 par souci de concision. J'ajouterais qu'une redirection basée sur js vers le site principal est aussi une possibilité, bien qu'un peu un hack ... – Aatch