11548 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour à tous,

Je vais encore enfreindre la règle 16 (à chaque fois que je poste dans ce salon c'est pareil...) en vous demandant de m'indiquer un script tout prêt, voire de m'en pondre un. Ah la la... Smiley confused

Voilà tout de même le pitch: je dois afficher sur une page une phrase contenant un lien, lien qui pointe vers une page d'informations sur la lecture du format Ogg Vorbis (quels logiciels installer/utiliser, tout ça). Il s'agit d'un projet destiné à être visionné essentiellement sous Linux, mais aussi potentiellement sous Windows ou Mac OS X. Or, cette phrase n'est destinée qu'aux utilisateurs de Windows ou OS X, car sous linux la lecture du ogg vorbis est possible «out of the box», donc pas d'explications à donner.

Je me suis donc dit que je pourrais tenter de lire en JS la user agent string, et de tout simplement masquer ce lien inutile si celle-ci contient le mot «Linux».
Et oui, je sais que ça n'est pas fiable à 100%, ni même sans doute à 90%. Mais je doute qu'un navigateur sous Windows ou OS X annonce du linux comme OS, et si sous Linux le lien n'est pas masqué... ça n'est pas bien gênant.

J'ai de plus testé les trois navigateurs disponibles nativement sous Linux (Firefox 2, Konqueror 3.5 et Opera 9), tels que disponibles pour ma distribution, et tous ont le mots «Linux» dans leur user agent string (http://www.useragentstring.com/test via ce site Smiley url ).

Alors, une petite suggestion?
L'idéal serait d'avoir un script simple qui se contenterait de récupérer la valeur de la user agent string (plusieurs méthodes selon les navigateurs?), et de tester si le mot «Linux» y apparait.

Merci d'avance et encore désolé de vous faire plancher. Smiley confused
Modifié par Florent V. (02 Sep 2007 - 22:36)
koala64 a écrit :
Sans JS, ça te permet au moins de ne pas dépendre de ce langage.

Bien tenté, mais non: il s'agit de pages statiques destinées à des périphériques de stockage (DVD-rom, mais peut-être à l'avenir aussi CD-rom, disque dur, clef USB). Je voulais le préciser mais j'ai dû oublier.
Ah oui, je l'ai croisé celui-ci. C'est une lecture intéressante (et qui par certains aspects dépasse mes maigres capacités, mais c'est intéressant).

Edit: tiens, je n'avais pas vu jusqu'ici que quirksmode.org avait tout un cours sur Javascript. J'avais remarqué quelques liens sur la page des ressources, mais n'étais jamais allé jusqu'à la table des matières de la partie sur Javascript. Je ne sais pas s'il faut en conclure quelque chose sur mon manque d'attention ou sur l'ergonomie contestable du site ( Smiley cligne ). Quoi qu'il en soit, ça me fait de la lecture. Smiley smile
Modifié par Florent V. (30 Aug 2007 - 22:06)
Modérateur
Florent V. a écrit :
Je ne sais pas s'il faut en conclure quelque chose sur mon manque d'attention ou sur l'ergonomie contestable du site ( Smiley cligne ).
euh... pour l'ergonomie : +1 Smiley langue Cela dit, il a toujours joué là-dessus... tu n'as peut-être pas vu la version précédente... tout en frames Smiley ravi Le fait est qu'il avait au moins rétabli la navigation et l'accessibilité de ces pages, lui. Smiley smile
a écrit :
Quoi qu'il en soit, ça me fait de la lecture. Smiley smile
Si tu comprends tout, c'est chouette, les habitués du forum JS vont pouvoir prendre des vacances... Y'a plus qu'à... Smiley lol
koala64 a écrit :
Le fait est qu'il avait au moins rétabli la navigation et l'accessibilité de ces pages, lui. Smiley smile

Tandis que d'autre non? Smiley confuse
Si tu pensais à moi, je crois qu'il faut que tu relises mon message tout en haut de ce sujet. Je pense avoir bien balisé la présentation de ce que je veux faire.

koala64 a écrit :
Si tu comprends tout, c'est chouette, les habitués du forum JS vont pouvoir prendre des vacances...

Tu cherches à te faire remplacer comme garde-chiourme du salon Javascript? Smiley lol
Modifié par Florent V. (31 Aug 2007 - 16:39)
Bon, voilà les nouvelles du front:

1. Le script sur quirksmode.org a l'air sympa, mais c'est frustrant de rien comprendre aux explications, ou de pas trop savoir comment utiliser les valeurs qu'on peut récupérer par ce biais (bille en JS pawaa...).

2. Du coup, m'apercevant que quirksmode.org proposait toute une série d'articles de base sur Javascript, j'ai pris quelques heures pour lire les premiers. J'y vois déjà plus clair, et je crois même avoir compris le détail du fonctionnement du script de détection du navigateur. Smiley winner (Bon, après je serais pas capable de le réécrire de mémoire, mais je pense avoir compris le principe de fonctionnement du bouzin).

3. Ceci dit, à la fin de l'article en question, il indique que navigator.platform (propriété platform de l'objet navigator, si j'ai bien compris?) permet d'obtenir une information plutôt correcte.

4. Je me suis donc fait une page contenant ceci:
<script type="text/javascript"><!--
document.write ('<p>Plateforme: ' + navigator.platform + '</p>');
--></script>

Et j'obtiens le résultat suivant (sous Ubuntu Linux 7.04):
- pour Firefox 2: Linux i686;
- pour Konqueror 3.5: Linux i686 X11;
- pour Opera 9: Linux;
- pour IE 6-7 via Wine: Win32.
Ça a donc l'air assez concluant.

Est-ce que quelqu'un a des informations sur la disponibilité de navigator.platform, la fiabilité des infos, etc.? Si ça n'est pas moins fiable que le résultat du script de détection du navigateur, je passerai par là.

Quoi qu'il en soit, on n'est pas loin du [Résolu]. Smiley smile
Du coup, j'ai fait ceci pour test (et à priori ça marche bien pour les navigateurs visés...):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Test</title>
	<style type="text/css">
	#info-oggvorbis {color: purple;}
	.js-generated {font-size: 1.5em; color: red; margin: .5em 0;}
	</style>
</head>

<body>
<p id="info-oggvorbis">Texte HTML brut avec info à cacher pour les utilisateurs de Linux (car négligeable pour eux).</p>

<script type="text/javascript"><!--
if (navigator.platform.indexOf('Linux') != -1) {
	document.getElementById('info-oggvorbis').style.display='none'
}
// Un peu d'infos tout de même...
document.write ('<p class="js-generated">Contenu de <code>navigator.platform</code>: ' + navigator.platform + '</p>');
--></script>

<p>Texte HTML brut.</p>
</body>
</html>

Tiens, ça pourrait tenir sur une ligne de code en fait... Smiley biggol
Modifié par Florent V. (01 Sep 2007 - 01:10)
bonjour,

Florent V. a écrit :

Est-ce que quelqu'un a des informations sur la disponibilité de navigator.platform,

Objet navigator : à Partir de IE 3
NN2
Moz -> tous
Saf -> tous
Opera 7
Selon le bouquin "definitive reference" compatible tous navigateurs ...
Salut,

Se baser sur l'objet navigator c'est peu fiable. On peut facilement modifier les ces propriétés, sachant qu'on final on veut mettre en concurence une capacité et un type de navigateur, autant tabler sur ces capacités.

Pour ça on peut passer par des objets, comme window.opera, ou document.all, ect..

Pour ce qui est de la plateforme c'est un peu plus fiable...
Bonjour Florent.

J'ai bien compris le but mais je pense quand même que c'est mettre du JS pour rien. Ne suffit-il pas d'écrire clairement dans le texte que le lien/l'explication est pour les personnes étant sous Mac ou Windows ? Smiley smile
Shinuza a écrit :
sachant qu'on final on veut mettre en concurence une capacité et un type de navigateur, autant tabler sur ces capacités.

J'ai bien compris ce principe, mais en l'occurrence, à moins que je ne puisse faire
if (media.playOggVorbis) {...}
ça ne me sera pas d'un très grand secours.
Cf. le message expliquant la démarche... au tout début du sujet. Smiley cligne

Shinuza a écrit :
Se baser sur l'objet navigator c'est peu fiable. On peut facilement modifier les ces propriétés

Oui, j'en suis bien conscient, mais si navigator.platform n'est pas moins fiable que l'information sur le système que l'on pourra potentiellement trouver dans le user agent string, c'est techniquement kif-kif... et plus simple pour moi. Smiley smile

Shinuza a écrit :
J'ai bien compris le but mais je pense quand même que c'est mettre du JS pour rien. Ne suffit-il pas d'écrire clairement dans le texte que le lien/l'explication est pour les personnes étant sous Mac ou Windows ?

Ben... je préfère autant pas. Surtout que l'utilisateur de Windows (ou Mac, d'ailleurs) qui lance le live-DVD linux et qui lit «Pour les utilisateurs de Windows et Mac: ...» se dira peut-être «Ah tiens, ben moi je suis un utilisateur de Windows|Mac» alors que l'information technique donnée ne le concernera pas dans le cadre de l'utilisation du live-DVD. Donc: si l'information reste sous Linux, tant pis, et si elle peut être cachée, tant mieux.

Le seul souci serait si un navigateur sous Windows ou Mac OS déclairait «Linux» dans navigator.platform. Autant je sais que la situation inverse existe (navigateurs sous Linux déclarant être IE sous Windows... ça n'est presque plus le cas aujourd'hui, mais ça a été le cas de certains navigateurs il y a quelques années), autant je doute qu'un navigateur sous ces plateformes déclare du Linux comme OS.
Donc ça me semble un risque très raisonnable (surtout pour donner accès à une information «périphérique»).
Ca fait quelques jours que je lurke cette page, sans apporter ma participation (j'ai la flème).
Cependant il serait plus simple de demander à l'utilisateur le système d'exploitation qu'il a, au lieu de faire une détection de l'os et d'afficher une page en fonction de cet OS.
Pourquoi ?
Ben tout simplement pour une raison simple, si j'ai 2 machine, et que je suis en train de naviguer sur le net (ou sur ton CD) sous une machine sous Windows, et que sur ma machine sous Linux j'ai besoin d'écoute du Ogg Vorbis. Je voudrais bien trouver les informations que je cherche sur ton CD et pour linux.
Gatsu35 a écrit :
Ben tout simplement pour une raison simple, si j'ai 2 machine, et que je suis en train de naviguer sur le net (ou sur ton CD) sous une machine sous Windows, et que sur ma machine sous Linux j'ai besoin d'écoute du Ogg Vorbis. Je voudrais bien trouver les informations que je cherche sur ton CD et pour linux.

Heu... donc laisser l'info pour que les utilisateurs (même occasionnels) de Linux qui consultent l'info depuis Windows puissent trouver l'info pour Linux? Je suis pas sûr d'avoir suivi, là.
Je rappelle que sous Linux la lecture du Ogg Vorbis est pour ainsi dire en natif, quelle que soit la distribution et même pour des distributions un peu anciennes.
Bon, pour revenir à l'aspect technique, je dois être très nul ou incapable de trouver une information convenable, car je n'arrive pas à externaliser mon code.

Pour rappel j'avais abouti à ceci:
<script type="text/javascript"><!--
if (navigator.platform.indexOf('Linux') != -1) {
	document.getElementById('info-oggvorbis').style.display='none'
}
--></script>
Placé dans le body directement après l'élément à éventuellement masquer, ça marchait très bien.

J'ai essayé d'en faire un script externe (appelé via depuis le head), mais je ne sais absolument pas comment m'y prendre. Je viens de passer une heure et demie à lire de la doc, faire des recherches, tester plein de choses... mais rien.

Bon, pour ce coup-ci je peux laisser ça dans le body, mais ça me chagrine cette histoire.
Une suggestion, une piste, un document de référence?
Je montre tout de même mon dernier essai (script externe appelé depuis head), qui ressemble à ceci:
// Cacher le lien vers la page d'explications sur le format OggVorbis aux utilisateurs de Linux
function cacherInfoOgg () {
	if (navigator.platform.indexOf('Linux') != -1)
		document.getElementById('oggvorbis').style.display='none';
	alert(navigator.platform);
}

// Déclenchement au chargement
if (document.addEventListener)
	document.addEventListener("load", cacherInfoOgg, false);
else if (document.body.onload)
	document.onload = cacherInfoOgg;

Marche sous Konqueror 3.5, Opera 9... mais pas Firefox 2 (pas de alert, pas d'erreur signalée par Firebug). Smiley decu
et avec

window.onload = cacherinfoogg;


au lieu de

document.onload


pour le déclenchement au chargement , sans devoir passer par tes
instructions conditionnelles ...
Gatsu35 a écrit :
Ben ouais, je dirai, ne cacher aucune info, et laisser l'info pour tout le monde.

C'est effectivement une option. Je vais proposer les deux et on verra.
Pages :