Javascript / pas javascript

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Raphaël

Javascript / pas javascript

Message par Raphaël »

Bonjour,
les navigateurs ie de dernières générations peuvent lire un type de javascript plus ou moins propriétaire, semble-t-il et qui apparemment ne serait compatible qu'avec ces navigateurs... Si le moteur Gecko ne peut encore les lire, est-ce par choix (non-approbation w3c, langage propriétaire etc...) ou par manque de développeurs, de temps ou d'informations technologiques ?
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

C'est un peu de tout cela à la fois...

Si la plupart des instructions propriétaires d'Internet Explorer sont documentées sur MSDN du point de vue du développeur web, rien ou presque n'est connu sur la façon dont elles doivent être interprétées par un navigateur. Les codes sources d'Internet Explorer étant évidemment tenus secrets, la seule façon que pourraient avoir les développeurs de Mozilla de suivre serait de procéder à des tests empiriques sur le comportement d'IE et essayer de reproduire quelque chose de similaire. Le mot suivre est important ici, cela voudrait dire que Gecko serait toujours en retard (donc pourquoi l'utiliser?) sur les "fonctionnalités" d'IE.

Le choix qui a été fait est donc de coller le plus possible aux spécifications recommandées par les organismes internationaux.

En ce qui concerne JavaScript, il ne s'agit pas du w3c mais de l'ECMA. La version de Javascript utilisée par Mozilla (JavaScript 1.5) est compatible avec la norme ECMA-262 Edition 3.
Orbite
Salamandre
Messages : 31
Inscription : 29 juil. 2003, 03:03

Message par Orbite »

Consacrer temps et efforts à du code propre à un constructeur, c'est surtout mettre de côté les principes d'universalité et d'accessibilité qui sont à la base du projet Gecko.

C'est aussi illusoire, car chercher la compatibilité avec des logiciels concurrents (au lieu de développer activement la compatibilité avec les normes du Web) ce n'est avantageux que pour la compagnie qui domine le marché. Les autres ne font que céder davantage de pouvoir. Ils se placent encore plus à la merci du plus fort avec l'espoir naïf qu'un jour ils prendront le dessus en donnant l'initiative à celui qui menace le plus leurs existences.
Raphaël
Arias
Messages : 9
Inscription : 28 juil. 2003, 09:50

Compatibilité ECMA

Message par Raphaël »

Benoit a écrit : Le choix qui a été fait est donc de coller le plus possible aux spécifications recommandées par les organismes internationaux.

En ce qui concerne JavaScript, il ne s'agit pas du w3c mais de l'ECMA. La version de Javascript utilisée par Mozilla (JavaScript 1.5) est compatible avec la norme ECMA-262 Edition 3.
et
Orbite a écrit :Consacrer temps et efforts à du code propre à un constructeur, c'est surtout mettre de côté les principes d'universalité et d'accessibilité qui sont à la base du projet Gecko.
Comment faire pour être sur qu'un javascript quelconque téléchargé sur la toile soit compatible avec la norme ECMA ? Suffit-il de le tester avec Mozilla ?
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Evidemment il n'est pas possible de "valider" un script comme on peut le faire avec un document (X)HTML ou CSS. Mais l'utilisation de la console JavaScript et de Venkman (débogueur JavaScript) dans Mozilla peut aider.

En général, les scripts qui ne fonctionnent que sous IE ne violent pas la norme ECMA, mais plutôt les méthodes d'accès au DOM (Document Object Model) qui permettent de manipuler les éléments d'une page.

Souvent il suffit de voir si le script utilise document.all["id"] au lieu de la méthode standard document.getElementById("id") - qui fonctionne pourtant parfaitement dans IE ! Une autre erreur courante est de prendre Mozilla pour Netscape 4.x et donc d'utiliser les méthodes propriétaires de Netscape 4 (document.layers["id"]) qui ont été volontairement abandonnées.
Snap
Lézard à collerette
Messages : 362
Inscription : 04 juil. 2003, 17:15

Message par Snap »

Benoit a écrit :Evidemment il n'est pas possible de "valider" un script comme on peut le faire avec un document (X)HTML ou CSS. Mais l'utilisation de la console JavaScript et de Venkman (débogueur JavaScript) dans Mozilla peut aider.
Absolument. Venkman, quand on arrive à s'en servir, est très utile !!
Benoit a écrit :Souvent il suffit de voir si le script utilise document.all["id"] au lieu de la méthode standard document.getElementById("id") - qui fonctionne pourtant parfaitement dans IE !
Tu as bien dit souvent :) Je crois que pour un truc que je voulais faire ca ne marchais pas..
Espérons que les codeurs JavaScripts de maintenant arretent de coder pour IE ! Sinon on aura encore des années à venir avec du code qui marche que sous IE..
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Snap
Orbite
Salamandre
Messages : 31
Inscription : 29 juil. 2003, 03:03

Message par Orbite »

Un code javascript est conforme à la norme ECMA s'il utilise la grammaire et la syntax ECMA pour accèder à la hierarchie des objects telle que définies par W3C.

Lorsqu'un script comporte deux parties distinctes, l'une pour Netscape et l'autre pour MSIE, ce n'est pas du ECMAScript. La detection du navigateur se fait généralement en testant la présence de document.all ou document.layers

Code : Tout sélectionner

exemple:
var ns = (document.layers) ? true : false;
var ie = (document.all) ? true : false;

if (ns) {
   ...code#1...
}
else
   { 
      if (ie) {
         ...identique au code#1 sauf que réécrit avec la syntax de MSIE...
      }
     else { 
        alert('Vous devez utiliser un navigateur récent...bla bla bla');
     }
}
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Tu pourrais peut-être préciser qu'il s'agit de la mauvaise façon ;)

Un article qui explique comment faire:
http://devedge.netscape.com/viewsource/ ... detection/
Orbite
Salamandre
Messages : 31
Inscription : 29 juil. 2003, 03:03

Message par Orbite »

Détecter la version d'un navigateur afin de l'alimenter avec du javascript spécifique à son constructeur est toujours de la mauvaise programmation.

L'idée derrière l'ECMAScript c'est justement de ne jamais recourir à une détection.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Orbite a écrit :L'idée derrière l'ECMAScript c'est justement de ne jamais recourir à une détection.
Je ne suis pas d'accord, ou plutôt ce sont deux choses totalement indépendantes. ECMAScript est la définition d'un langage de programmation sans présumer de son utilisation.

Ce qui pose problème dans Internet Explorer, c'est l'implantation de ses méthodes d'accès au DOM. Et si la détection consiste à tester l'existence d'un objet ou d'une méthode avant de l'utiliser, c'est tout à fait valable et même recommandé.
Orbite
Salamandre
Messages : 31
Inscription : 29 juil. 2003, 03:03

Message par Orbite »

Nous ne discutons pas de la même chose.

Vérifier un objet ou une méthode avant de l'utiliser est une bonne pratique de programmation. Je suis d'accord.

Traduire du code en de multiple version de javascript alors qu'il existe un commun dénominateur à toutes ces versions n'est pas une façon intelligente de programmer. D'autant plus que la redirection vers une version ou une autre du code se fait avec l'hypothèse boiteuse qu'il n'existe qu'un nombre fini d'environnements de travail, Netscape et MSIE.
ECMA a écrit :ECMAScript began as a scripting language specification meant for use in Web applications, but it deliberately does not restrict itself to any particular host environment.
Ou dit autrement ECMA-262 est une norme Web qui dicte la grammaire et la syntax du javascript, sans se soucier de la marque des navigateurs. Si vous faites la distinction entre les différents navigateurs Web pour exécuter du javascript, vous ne programmer pas selon l'esprit qui a donné naissance à ECMAScript.
jeanjean
Arias
Messages : 5
Inscription : 31 juil. 2003, 09:52

Message par jeanjean »

pour le javascript, le problème vient plutôt du dom différent dans ie non?

http://www.xs4all.nl/~ppk/js/doctypes.html

c'est après m'être cassé les dents sur des tables comme ça que j'ai decidé que je ne ferais jamais d'animation (ou du dhtml un peu complexe à la flash) avec le javascript (alors que c'est tout à fait possible)
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

jeanjean a écrit :pour le javascript, le problème vient plutôt du dom différent dans ie non?

http://www.xs4all.nl/~ppk/js/doctypes.html

c'est après m'être cassé les dents sur des tables comme ça que j'ai decidé que je ne ferais jamais d'animation (ou du dhtml un peu complexe à la flash) avec le javascript (alors que c'est tout à fait possible)
Tu peux pourtant trouver des tas de ressources intéressantes pour apprendre à le faire sur DevEdge
http://devedge.netscape.com/toolbox/exa ... dom-style/
Orbite
Salamandre
Messages : 31
Inscription : 29 juil. 2003, 03:03

Message par Orbite »

jeanjean a écrit :pour le javascript, le problème vient plutôt du dom différent dans ie non?
Si on veut. Mais c'est comme débattre si c'est la poule ou l'oeuf qui est apparue en premier.

Le DOM spécifique à IE n'existe que si on peut y accèder grâce à des instructions javascript spécifiques à IE. Ces instructions ont leur raison d'être uniquement parce le DOM de IE est singulier. On tourne en rond.
mat
g3ck0m4st3r
Messages : 57
Inscription : 31 juil. 2003, 04:02

Message par mat »

Instructions javascript specifiques a IE ? comme ?
La specificite d'IE c'est plutot qu'il existe une api DOM differente (document.all & co), et que la majorite des sites on tendance a utiliser ca.
Maintenant, dans tout ce que propose IE dans son api proprio, doit y avoir 90% de faisable avec le dom classique (et le reste genre les filtres tout ca rame tellement que de toutes facons...)
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 12 invités