NAVIGATOR (+CSSDETECTOR)

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
- - Dernière réponse : xXVoxPopuliXx
Messages postés
8
Date d'inscription
dimanche 7 novembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
- 16 nov. 2010 à 22:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52472-navigator-cssdetector

Afficher la suite 
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8 -
Bonjour
Bonne idée ce script pour charger des css personnalisés au navigateurs
a++
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Salut,

1/ Il serait bon de ne pas effectuer TOUS les tests de navigateurs : quand on en a trouvé un, a priori, ce ne sera aucun des suivants... Donc utiliser elseif peut être une bonne idée.
2/ Tu devrais t'intéresser à la fonction preg_split()
3/ Browser est la bonne orthographe, broswer une mauvaise.
4/ "Il se base sur une logique permettant d'éditer et rajouter aisément des navigateurs." => Pour que ce soit encore plus simple, le mieux est un fichier séparé avec les différents navigateurs.
5/ "Il vous permettra d'adapter le rendu graphique de vos pages en fonction des moteurs web graphiques utilisé par vos visiteurs" => C'est une pratique qui est découragée aujourd'hui, depuis que les standards ont réellement leur place sur le web ; ce qui est encouragé, c'est d'utiliser des standards. Si on se plie toujours aux contraintes imposées par des logiciels propriétaires qui implémentent leurs technologies propriétaires, on peut dire adieu à la compatibilité et la portabilité ; au lieu de ça, il est préférable, à mon sens, de pénaliser les logiciels qui ne respectent pas les standards afin de forcer leurs éditeurs à s'y mettre sérieusement (lesquels standards ne sont pas là pour freiner le développement et l'innovation, mais garantir à l'utilisateur final un affichage correct du contenu web).
xXVoxPopuliXx
Messages postés
8
Date d'inscription
dimanche 7 novembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
-
Merci COD57 ;)

Merci pour cette remarque très constructive NEIGEDHIVER.
1) Je vais revoir mon code pour implémenter cette optimisation (en veillant a se que les répétitions qui se font entre les navigateurs dans la variable $_SERVER ne perturbe pas le programme)

2) hum, je vais en voir plus sur cette fonction afin de voir si elle peut m'aider a améliorer Navigator mais j'avoue qu'aux premiers abords elle semble un peu complexe a saisir ^^

3) oups, se sera corrigé pour la prochaine mise a jours ^^

4) je ne suis pas encore de ce niveau pour me permettre ce type de programmation mais ça viendra :)

5) c'est bien pratique quand tu désire construire quelques petits chefs d'œuvres artistique en CSS pour ne les afficher que pour Firefox (par exemple). Ces "gadjets" sont comme tout se qui est porté design: inutile mais beau a voir pour ceux qui le peuvent. Ce programme te permet d'afficher tes œuvres sans perturber ton site niveau CSS (par exemple: je l'ai monté pour un menu CSS2/CSS3 qui ne dois qu'améliorer l'esthétique normalement, il respectait les standard CSS2 et pourtant seule firefox et chrome ont le bon rendu)
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
2/ Je ne sais pas si elle est vraiment utile pour ton code, parce que j'ai pas forcément bien saisi ce que faisait la fonction DecoupeurDeChaineDeCaracteres... Si ça se trouve, une simple expression régulière avec preg_match() suffit.

4) L'idée est d'avoir un fichier séparé contenant un tableau associatif avec les différents navigateurs, leur nom et la chaîne à chercher. L'idéal étant que l'inclusion de ce fichier retourne le tableau pour le stocker dans une variable :
<?php
return array(
array('name' => 'Firefox', 'search' => 'Firefox'),
array('name' => 'Internet Explorer', 'search' => 'MSIE'),
// Etc
);
?>

Utilisation de ce fichier :
$browsers = require 'navigators.inc.php';

Pour parcourir :
foreach ($browsers as $browser) {
if (strpos($secteurderecherche, $browser['search'])) {
break; // On sort de la boucle, on garde $browser avec les bonnes valeurs
}
}

Cette boucle remplace toute ta série de if. Le code du traitement n'a pas besoin d'être modifié pour rajouter un navigateur (comme IceWeasel par exemple, que tu as omis ;) )

5) T'as pas tort dans la pratique, même si je maintiens ce que j'ai dit dans l'absolu ;)

P.S. : désolé pour la présentation du code, mais les commentaires sur CS sont vraiment mal foutus...
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Autre chose (désolé pour le double post) :
Les fonctions strpos() et stripos() peut renvoyer 0 (zéro) s'il s'agit du premier caractère, ce qui sera évalué comme FALSE par la structure if.
Il serait donc judicieux d'utiliser un test d'inégalité stricte :

if (FALSE !== strpos($secteurderecherche, $browser['search'])) {

Cf la doc à ce sujet : http://fr.php.net/strpos