Detecter si JAVASCRIPT activé mais avec PHP !

Nouveau WRInaute
Bonjour,

Je pense que la question à surement du être poser, mais bon, avec le système de recherche du site : 1750 réponses, et c'est vrai : detecter, javascript et php, c'est surement dans les mots les plus utilisés dans les posts !

Enfin voila, j'ai un problème, actuellement, je reconstruis mon site, et j'ai du boulot.

Quand sur une page, j'ai plusieurs parties, j'utilise un menu en javascript, et chaque lien va rendre la partie visible de la page.

Mon problème, si javascript est désactivé, il est impossible de voir ces parties du site.

Ce que je cherche donc, ca serait une fonction PHP pour détecter si javascript est activé ou pas.
En faites, je veux éviter le <noscript>.

Si vous avez une idée, vous êtes les bienvenues.

En rédigeant, j'ai pensé à une idée, mais sa va faire "dégueulasse" mais je vais tester au cas ou.
 
WRInaute passionné
PHP est exécuté sur ton serveur... Javascript est intermrété par le navigateur du visiteur...

Donc tu es obligé de passer par du Javascript et de recharger la page pour un test correct.
 
WRInaute impliqué
si des parties de ta page sont invisibles et que tu les rends visibles par une fonction javascript, il y a une solution:
au chargement de la page, toutes les parties de ta page doivent être visibles, et tu lances un js pour les cacher.
comme ça, si js n'est pas activé, tout reste affiché.
c'est ce que j'ai fait pour le menu gauche de mon www .
;)
 
WRInaute discret
ca revient un peu au meme que le noscript en + compliqué !

Pourquoi ne pas vouloir l'utiliser ? Il sert à ça non ?
 
Nouveau WRInaute
C'est simple, en faites, c'est un menu verticial, et chaque partie de la page est limitée par des :
Code:
echo '<span id="section_1" style="display: block">';

Donc si je veux quelques chose de "propre" (je sais que mon site est pire que dégueulasse, alors j'essai d'arranger un peu), je peux pas laisser ça.

Bon, j'ai opté pour cette solution, en dessous de mon </script>
J'ajoute un <noscript> :
Code:
if (isset($_GET["verif"])) 
{ 
	$verif=$_GET["verif"];
}

if (!($verif==no))
{
echo '<noscript><meta http-equiv="refresh" content="0;url=./page.php?js=no" /> </noscript>';
}
et toutes les span, je les balance aussi en (!($verif))

Ce que me permet, en cas de refus de javascript, d'avoir toute la page d'afficher, et dans le cas inverse, d'avoir mon menu.

Sinon, pourquoi cette solution et pas le cookie :
Le cookie peut etre refuser

Pourquoi pas la solution du phpsession()
->> bah AOL:// !

Donc voila, si vous avez d'autres idée.
 
WRInaute impliqué
<ouverture balise js>
<!--
et ici tu appel une page page.php avec un code javascript
//-->
<fermeture balise js>

page.php est une page qui implémente un cookie chez le client pour dire "javascript accepté par le nav du client"

c'est un peu barbar, mais c'est la seul maniere qui me passe par la tete la comme ça d'un coup.

edit: suis fatigay, j'avais pas lu le topic en entier :oops:
 
WRInaute impliqué
Alors oui Zim donne une bonne piste,
si tu as une page tunnel (pas good pour le ref) a la place du cookie de Zim
tu memorises ce qui te permet de reconnaître l'internaute à savoir son adresse IP + identification systex et navigateur (pour essayer de différencier un max ceux qui passent par un proxy)
Ceux que tu arrives a identifier seront ceux qui ont le javascript activé car les autres n'auront pas eu l'appel de la page php via javascript comme le préconise Zim.

En recap:
Dans la page tunnel l'appel de via javascript de la page meminternaute.php
Dans meminternaute.php tu memorises IP + SYSTEX + NAVIGATEUR
En début de toutes tes autres pages tu testes si c'est un internaute connu si oui alors javascript si non ...

En fait page tunnel ou pas tunnel tu fais cet appel a la page memo dans toutes tes pages au cas ou l'internaute arrive directement à l'interieur du site et par defaut tu présentes bien une version non javascript

A+
 
WRInaute impliqué
Tu as doublement raison E-Kiwi d'autant que l'extension NoScript pour FireFox doit faire pas mal d'adepte.

Merci pour ton lien.
A+
 
Nouveau WRInaute
Code:
Dans meminternaute.php tu memorises IP + SYSTEX + NAVIGATEUR

Mon problème réside dans 2 lettres que tu utilises : IP
Et si tu prends ces 2 lettres, que tu les ajoutes à 3 autres lettres que tu cites pas : AOL
Je pense que tu commences à comprendre, le navigateur aol qui spoff les ips à chaques pages.
Si tu ajoutes à ca que les mails aol ne sont pas acceptés sur mon site, que le système d'identification refuse aussi le navigateur aol (enregistrement de l'ip lors de la connexion), je peux pas leurs interdire tout le site

Les menus vertical ne sont pas ce que je recherche, puisque c'est pour un contenu de page, et je dispose de 580 pixels, donc si je dois sacrifier 150 pixels pour un menu, ca fera ridicule (mon site s'affiche sur 1000 pixels, et pas 1024 à cause de la scrollbar de mozilla)

Donc il me faut un menu horizontale, et autres problème, j'ai 65% de mes visiteurs sous IE, donc, le css, je regarde la compatibilité avec IE.
Et juste pour info, j'ai eut depuis de debut du mois 1,2% de visiteurs sous MAC et 0.8% visiteurs sous linux.

Pour ceux qui est d'enregistré dans un cookie, comme j'ai dit, si les gens refusent les cookies, bah ca passera pas.

En faites, je cherche vraiment un systeme qui peut passer dans tous les cas, c'est ma roue de secours en sorte.
 
Nouveau WRInaute
Bacteries a dit:
Bah je plussoie E-kiwi, le CSS.
Un CSS bien fait ça passe sous IE, Firefox, Opera, Konqueror, ...

http://css.alsacreations.com/Constructi ... us-en-CSS/

Je quote :
Tests navigateurs :

* Windows : Testé avec succès sur Firefox 0.6, 0.8, 0.93, 1.0 RC; Opera 7.51, 7.60; Mozilla 1.6; Epiphany; Netscape 6 PR1 et 7.02; Konqueror 3.2.0 (petit décalage de la ligne sous le menu).
* Mac : Testé avec succès sur Firefox 1.0 Mac, Opera 7.54 mac, Camino 0.8 et Safari.

Note : Il ne fonctionne bien évidemment pas sous Internet Explorer (toutes versions et plateformes) qui ne reconnaît pas les pseudo-éléments standards Before et After.

Pour afficher ce menu correctement sur IE, un remaniement doit être fait, ainsi que l'utilisation d'un hack "IE7" de Dean Edwards.

Un CSS bien fait ça passe sous IE
sans modifier quoi que ce soit ?
C'est pas ce que je recherche, surtout qu'il y a trop de probleme avec les CSS, comme par exemple, quand on post une image, tu dois utiliser la GD pour calculer la taille de l'image, puis ensuite, lui imposer un width /height pour ne pas dépasser la taille de ton <div> sinon ca va empecher de rendre visible la partie droite de ton site.
Donc, c'est utiliser beaucoup plus de ressource serveur qu'un simple tableau.
Ce que je reproche au CSS, et son manque de flexibilité si tu veux pas utiliser une tonne de ressource, d'ailleurs, certains, n'hesitent pas à dire, que si tu fais un site assez complexe, le css peut vite se transformer en usine à gaz, et pas qu'à cause du CSS en lui meme, mais de toute les vérification que tu vas devoir faire en php/asp si tu veux pas avoir de chose bizarre.

Personnellement, pour donner un visiuel CSS, j'utilise des tableaux pour éviter de devoir tout controler via php (pour éviter de trop consommer de ressource) et ce principe, ne passe pas au validator.
 
WRInaute accro
ouh la, je vois pas le lien entre des images postées trop grosses et le fait d utiliser les divs par rapport aux tableaux.

déjà là on parle de menu, pas de template de site, ensuite, comme tout, il a des facons plus ou moins barbares de creer le template, et au final, ca passera soit dans 100% des cas si c est bien étudié, soit sur un seul navigateur si c est mal fait.

ensuite qd tu parles d uzines à gaz, entre une page optimisé qui fait 10ko et les belles vieilles pages comme on voit avant qui font 100ko (pour le mem rendu final) on voit vite ou se trouve l otpimisation. il faut penser aux visiteurs autant qu'au serveur.

pour en revenir à l'image trop grande, ca se controle pdt l upload de l image (donc une fois) pas à chaque affichage de l'image dans le site. bref, il faut juste se perfectionner en css pour en voir la véritable utilité

Oui un site 100% css / divs peut passer dans 100% des navigateurs, et peut etre lu plus facilement par les robots de recherche, avec des pages plus legeres pour le visiteur, et pas plus lourde pour le serveur
 
WRInaute impliqué
e-kiwi a dit:
Oui un site 100% css / divs peut passer dans 100% des navigateurs, et peut etre lu plus facilement par les robots de recherche, avec des pages plus legeres pour le visiteur, et pas plus lourde pour le serveur
+1

Pour WebJfr je dirais même que c'est le vrai vrai gros plus du CSS c'est que tes données seront lues par absolument tout ce qui existe y compris les robots et sof des mal voyant etc... puisque dans tes pages tu n'as plus que du contenu mais là on n'est plus dans ton problème de départ mais dans le combat que l'on retrouve souvent CSS contre TABLE et je pense que bon nombre de Webmaster moderne n'en sont plus là.

Et j'ajouterai que ton javascript non plus il sera pas sur toutes les plateformes...

A+
 
WRInaute passionné
webjfr a dit:
sans modifier quoi que ce soit ?
C'est pas ce que je recherche, surtout qu'il y a trop de probleme avec les CSS, comme par exemple, quand on post une image, tu dois utiliser la GD pour calculer la taille de l'image, puis ensuite, lui imposer un width /height pour ne pas dépasser la taille de ton <div> sinon ca va empecher de rendre visible la partie droite de ton site.
Donc, c'est utiliser beaucoup plus de ressource serveur qu'un simple tableau.
Ce que je reproche au CSS, et son manque de flexibilité si tu veux pas utiliser une tonne de ressource, d'ailleurs, certains, n'hesitent pas à dire, que si tu fais un site assez complexe, le css peut vite se transformer en usine à gaz, et pas qu'à cause du CSS en lui meme, mais de toute les vérification que tu vas devoir faire en php/asp si tu veux pas avoir de chose bizarre.

Personnellement, pour donner un visiuel CSS, j'utilise des tableaux pour éviter de devoir tout controler via php (pour éviter de trop consommer de ressource) et ce principe, ne passe pas au validator.

Ouh la, je ne sais pas qui t'as dit ça mais je ne vois pas en quoi tu vas devoir faire plein de tests. Le site de mon www, pas valide w3c encore certes, est fait quasi qu'en CSS et j'ai pas eut besoin de faire des dizaines de tests. Par rapport à ma version html avec des tableaux je gagne en terme de Ko, de lisibilité (des non voyants naviguent sur mon site sans problème), ...
Et si je veux changer un truc (genre couleur des liens) j'ai un fichier à toucher...

Et le site est compatible IE, Firefox, Konqueror, Opera, ... Windows, Mac ou Linux.
 
Nouveau WRInaute
J'ai un solution pour vous :)

Code:
<?php
session_start();

if(!isset($_SESSION['js'])) $_SESSION['js'] = true;
if(isset($_GET['js']))
{
	if($_GET['js'] == "no" ) $_SESSION['js'] = false;
	else if($_GET['js'] == "yes") $_SESSION['js'] = true;
}

// si javascript est activé
if($_SESSION['js'])
{
	// on test si il est vraiment activer
echo '
<noscript>
	<meta http-equiv="Refresh" content="0; URL=index.php?js=no&file='.$file.'">
</noscript>
';
}
else // S'il est pas activé
{
	// on test s'il est vraiment pas activé
echo '
<script language="JavaScript" type="text/javascript">
	document.location.href="index.php?js=yes&file='.$file.'";
</script>
';
}

?>
 
Discussions similaires
Haut