web-dev-qa-db-fra.com

Comment rediriger si JavaScript est désactivé?

J'ai un site qui repose fortement sur JavaScript. J'ai créé un site miroir, qui a tous les JS ainsi que tous les éléments qui nécessitent des JS supprimés. Qu'est-ce qu'un bon moyen facile de rediriger les utilisateurs sur le site miroir s'ils ne sont pas activés Javascript?

J'ai essayé cela, mais ça ne semble pas très bon:

<noscript>
  <meta http-equiv="refresh" content="0; URL=nojs/index.php">
</noscript>

J'ai également essayé de mettre en-tête-redirection dans l'étiquette Noscript, mais cela n'a pas fonctionné.

30
zeckdude

Faites la version NO-JavaScript du site la valeur par défaut. Inclure un petit script là-bas pour rediriger vers le site scripté.

Ou abandonner l'utilisation d'une redirection entièrement et aller avec amélioration progressive

22
Matt
<noscript>
    <p>This site is best viewed with Javascript. If you are unable to turn on Javascript, please use this <a href="http://sitewithoutjavascript.com">site</a>.</p>
</noscript>

Certaines personnes désactivent volontairement JavaScript et vous voudrez peut-être leur donner une chance de l'allumer avant de les rediriger.

78
Tyler Carter

Utilisez ce code que j'ai proposé:

<noscript>
  <style>html{display:none;}</style>
  <meta http-equiv="refresh" content="0.0;url=nojs/index.php">
</noscript>

Il utilise le style pour bloquer ce qui est sur la page afin que les gens ne remarquent rien avant de rediriger. La seule chose qui m'énerve, c'est que je veux quelque chose de mieux que Meta Refresh, comme cela peut être bloqué sur certains navigateurs comme IE. A PHP L'en-tête n'est pas vraiment une solution car vous ne pouvez pas le mettre dans une balise noscript car il va simplement l'ignorer et l'écrire tout de suite.

48
Ben Gollow

Quelle est votre définition de "pas très bien"?

Tous mes sites utilisent:

<noscript>
  <meta http-equiv="refresh" content="0; url=http://www.sadtrombone.com/" />
</noscript>
16
Amy B

Je ne ferais pas la redirection du côté client, comme cela pourrait sembler gênant à l'utilisateur. Au lieu de cela, ce que je ferais, c'est utiliser <noscript> Pour afficher le contenu de ce site JS-Moins sur la même page. Cela peut être plus de travail, mais ce serait certainement une expérience plus fluide.

6
Sasha

J'ai proposé une meilleure solution que de rediriger l'utilisateur comme méta-rafraîchissement peut être désactivé dans IE.

Mettez ceci dans la tête:

<style>div#body{display:none;}</style>

Mettez ceci dans le corps:

<noscript>NO JAVASCRIPT CONTENT HERE</noscript>

<noscript><div id="body"></noscript>JAVASCRIPT CONTENT HERE<noscript></div></noscript>

De cette façon, les tags sont là où ils sont censés être.

2
Ben Gollow