Javascript / pas javascript
Javascript / pas javascript
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 ?
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 ?
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.
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.
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.
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.
Compatibilité ECMA
etBenoit 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.
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 ?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.
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.
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.
Absolument. Venkman, quand on arrive à s'en servir, est très utile !!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.
Tu as bien dit souvent Je crois que pour un truc que je voulais faire ca ne marchais pas..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 !
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
Snap
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
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');
}
}
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/
Un article qui explique comment faire:
http://devedge.netscape.com/viewsource/ ... detection/
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.Orbite a écrit :L'idée derrière l'ECMAScript c'est justement de ne jamais recourir à une détection.
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é.
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.
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.
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.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.
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)
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 DevEdgejeanjean 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)
http://devedge.netscape.com/toolbox/exa ... dom-style/
Si on veut. Mais c'est comme débattre si c'est la poule ou l'oeuf qui est apparue en premier.jeanjean a écrit :pour le javascript, le problème vient plutôt du dom différent dans ie non?
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.
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...)
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...)
--
mat
Un site vous pose probleme avec gecko ? Aidez nous a changer ca !
{ http://mat.virgule.info , http://www.openweb.eu.org/ , http://www.nekeme.net/ , http://www.mozilla-europe.org/ }
mat
Un site vous pose probleme avec gecko ? Aidez nous a changer ca !
{ http://mat.virgule.info , http://www.openweb.eu.org/ , http://www.nekeme.net/ , http://www.mozilla-europe.org/ }
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 12 invités