Je voudrais vous proposer un mini-concours. Il n'y a strictement rien à
gagner, sinon mon estime personnelle...
Voici le challenge. Il s'agit d'initialiser une variable avec la valeur
true ou false, selon que le navigateur supporte ou non le sélecteur CSS
:hover sur autre chose qu'une ancre... autant dire qu'il faut détecter
si le navigateur est oui ou non Microsoft Internet Explorer.
Quelques précisions :
- Si le test se trompe pour les navigateurs très vieux du style
Netscape 4 ou Internet Explorer 5.0, ce n'est pas très grave.
- En revanche, le test ne doit pas se tromper pour les navigateurs
récents qui se font passer pour MSIE en maquillant leur appName.
- Le test ne doit pas porter sur une liste de navigateurs (Opera,
iCab, Mozilla, Firefox, etc.) car une telle liste ne sera jamais
exhaustive.
- Le test doit être aussi court que possible (ne pas dépasser trois
ou quatre lignes de 80 colonnes) et surtout être lisible.
Je précise que ce n'est pas qu'un jeu futile, mais que j'aimerais
vraiment avoir une solution utilisable (voir mes derniers articles dans
fr.comp.infosystemes.www.auteurs pour voir à quoi cela va servir).
Je cite ce que disait Michael Winter (7e article du lien que tu as donné) :
si tu avais pu traduire du même coup, çà m'aurait bien facilité.
Oh ! Tu serais donc encore plus nul que moi en estranger ? J'essaye.
Again, I'm confused as to what you mean. Perhaps: "Will IE/Win ever return a non-empty collection using this code?" If so, then yes, IE6 will return a collection containing all elements within the document, as it should. IE5.x will always return an empty collection, and IE4 doesn't support the getElementsByTagName method at all.
De nouveau, je me demande ce que tu veux dire. Peut-être « IE/Win retournera-t-il toujours une collection non vide en utilisant ce code » ? Dans ce cas, alors oui, IE6 retournera une collection de tous les éléments contenus dans le document, ce qui est le comportement prévu. IE5.x retournera toujours une collection vide, et IE4 ne supporte pas la méthode getElementsByTagName du tout.
Je n'ai plus IE4 Mac pour voir ... Mais IE5 1 ou 2 pour Mac ne retourne pas une empty collection ... loin s'en faut ... puisque, par chance, il retourne aussi le doctype.
Ok, donc si j'en crois tes essais sur Mac et les propos de Michael Winter pour Windows, IE5/Mac se comporte comme IE6/Win.
Du coup, pour gérer les plus vieux IE, je me demande si le test ne serait pas mieux comme ceci :
!document.getElementsByTagName -> pour avoir true sur IE4/Win
!document.getElementsByTagName('*') || !document.getElementsByTagName('*').length -> pour avoir true sur IE5/Win
document.getElementsByTagName('*')[0].tagName == '!' -> pour avoir true sur IE5/Mac et IE6/Win
Cela ne devrait rien changer aux navigateurs corrects, qui doivent répondre true jusqu'à document.getElementsByTagName('*').length.
Je voulais dire "true" aux tests directs, et donc "false" aux tests inversés par "!".
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
Olivier Miakinen wrote:
Je cite ce que disait Michael Winter (7e article du lien que tu as donné) :
si tu avais pu traduire du même coup, çà m'aurait bien facilité.
Oh ! Tu serais donc encore plus nul que moi en estranger ? J'essaye.
Again, I'm confused as to what you mean. Perhaps: "Will IE/Win ever
return a non-empty collection using this code?" If so, then yes, IE6
will return a collection containing all elements within the document, as
it should. IE5.x will always return an empty collection, and IE4 doesn't
support the getElementsByTagName method at all.
De nouveau, je me demande ce que tu veux dire. Peut-être « IE/Win
retournera-t-il toujours une collection non vide en utilisant ce
code » ? Dans ce cas, alors oui, IE6 retournera une collection de tous
les éléments contenus dans le document, ce qui est le comportement
prévu. IE5.x retournera toujours une collection vide, et IE4 ne
supporte pas la méthode getElementsByTagName du tout.
Je n'ai plus IE4 Mac pour voir ...
Mais IE5 1 ou 2 pour Mac ne retourne pas une empty collection
... loin s'en faut ... puisque, par chance, il retourne aussi le doctype.
Ok, donc si j'en crois tes essais sur Mac et les propos de Michael
Winter pour Windows, IE5/Mac se comporte comme IE6/Win.
Du coup, pour gérer les plus vieux IE, je me demande si le test ne
serait pas mieux comme ceci :
Je cite ce que disait Michael Winter (7e article du lien que tu as donné) :
si tu avais pu traduire du même coup, çà m'aurait bien facilité.
Oh ! Tu serais donc encore plus nul que moi en estranger ? J'essaye.
Again, I'm confused as to what you mean. Perhaps: "Will IE/Win ever return a non-empty collection using this code?" If so, then yes, IE6 will return a collection containing all elements within the document, as it should. IE5.x will always return an empty collection, and IE4 doesn't support the getElementsByTagName method at all.
De nouveau, je me demande ce que tu veux dire. Peut-être « IE/Win retournera-t-il toujours une collection non vide en utilisant ce code » ? Dans ce cas, alors oui, IE6 retournera une collection de tous les éléments contenus dans le document, ce qui est le comportement prévu. IE5.x retournera toujours une collection vide, et IE4 ne supporte pas la méthode getElementsByTagName du tout.
Je n'ai plus IE4 Mac pour voir ... Mais IE5 1 ou 2 pour Mac ne retourne pas une empty collection ... loin s'en faut ... puisque, par chance, il retourne aussi le doctype.
Ok, donc si j'en crois tes essais sur Mac et les propos de Michael Winter pour Windows, IE5/Mac se comporte comme IE6/Win.
Du coup, pour gérer les plus vieux IE, je me demande si le test ne serait pas mieux comme ceci :
Je cite ce que disait Michael Winter (7e article du lien que tu as donné) :
si tu avais pu traduire du même coup, çà m'aurait bien facilité.
Oh ! Tu serais donc encore plus nul que moi en estranger ? J'essaye.
tu es un chou.
De nouveau, je me demande ce que tu veux dire. Peut-être « IE/Win retournera-t-il toujours une collection non vide en utilisant ce code » ? Dans ce cas, alors oui, IE6 retournera une collection de tous les éléments contenus dans le document, ce qui est le comportement prévu. IE5.x retournera toujours une collection vide, et IE4 ne supporte pas la méthode getElementsByTagName du tout.
c'est bien ce qu'approximavement j'avais interprété :-)
Je voulais dire "true" aux tests directs, et donc "false" aux tests inversés par "!".
voir l'autre soluce non+non ?
-- Stephane Moriaux et son [moins] vieux Mac
Olivier Miakinen wrote:
Olivier Miakinen wrote:
Je cite ce que disait Michael Winter (7e article du lien que tu as donné) :
si tu avais pu traduire du même coup, çà m'aurait bien facilité.
Oh ! Tu serais donc encore plus nul que moi en estranger ? J'essaye.
tu es un chou.
De nouveau, je me demande ce que tu veux dire. Peut-être « IE/Win
retournera-t-il toujours une collection non vide en utilisant ce
code » ? Dans ce cas, alors oui, IE6 retournera une collection de tous
les éléments contenus dans le document, ce qui est le comportement
prévu. IE5.x retournera toujours une collection vide, et IE4 ne
supporte pas la méthode getElementsByTagName du tout.
c'est bien ce qu'approximavement j'avais interprété :-)
Je voulais dire "true" aux tests directs, et donc "false" aux tests
inversés par "!".
Je cite ce que disait Michael Winter (7e article du lien que tu as donné) :
si tu avais pu traduire du même coup, çà m'aurait bien facilité.
Oh ! Tu serais donc encore plus nul que moi en estranger ? J'essaye.
tu es un chou.
De nouveau, je me demande ce que tu veux dire. Peut-être « IE/Win retournera-t-il toujours une collection non vide en utilisant ce code » ? Dans ce cas, alors oui, IE6 retournera une collection de tous les éléments contenus dans le document, ce qui est le comportement prévu. IE5.x retournera toujours une collection vide, et IE4 ne supporte pas la méthode getElementsByTagName du tout.
c'est bien ce qu'approximavement j'avais interprété :-)
Je voulais dire "true" aux tests directs, et donc "false" aux tests inversés par "!".
voir l'autre soluce non+non ?
-- Stephane Moriaux et son [moins] vieux Mac
ASM
Olivier Miakinen wrote:
En revanche, tous tes tests répondront "ie = false" sur des IE/Win versions 4 et 5. Cela dit, je m'en fous (je disais bien que ces versions sont trop vieilles pour que je veuille contourner leurs bugs) mais il faut le savoir.
par le ! ! je cherche à ce que les non IE anciens ne râlent pas c'est tout ...
-- Stephane Moriaux et son [moins] vieux Mac
Olivier Miakinen wrote:
En revanche, tous tes tests répondront "ie = false" sur des IE/Win
versions 4 et 5. Cela dit, je m'en fous (je disais bien que ces versions
sont trop vieilles pour que je veuille contourner leurs bugs) mais il
faut le savoir.
par le ! ! je cherche à ce que les non IE anciens ne râlent pas
c'est tout ...
En revanche, tous tes tests répondront "ie = false" sur des IE/Win versions 4 et 5. Cela dit, je m'en fous (je disais bien que ces versions sont trop vieilles pour que je veuille contourner leurs bugs) mais il faut le savoir.
par le ! ! je cherche à ce que les non IE anciens ne râlent pas c'est tout ...
-- Stephane Moriaux et son [moins] vieux Mac
Olivier Miakinen
[...] IE5.x retournera toujours une collection vide, et IE4 ne supporte pas la méthode getElementsByTagName du tout.
[...]
Je voulais dire "true" aux tests directs, et donc "false" aux tests inversés par "!".
voir l'autre soluce non+non ?
Ça ne change strictement rien au point indiqué par Michael.
Tant que tu testes sur des navigateurs qui répondent un truc non nul à : - document.getElementsByTagName et à : - document.getElementsByTagName('*') et à : - document.getElementsByTagName('*').length alors le résultat sera le même entre les "&& (...)" que tu utilises et les "|| (!...)" que je proposais.
En revanche, tous tes tests répondront "ie = false" sur des IE/Win versions 4 et 5. Cela dit, je m'en fous (je disais bien que ces versions sont trop vieilles pour que je veuille contourner leurs bugs) mais il faut le savoir.
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
[...] IE5.x retournera toujours une collection vide, et IE4 ne
supporte pas la méthode getElementsByTagName du tout.
[...]
Je voulais dire "true" aux tests directs, et donc "false" aux tests
inversés par "!".
voir l'autre soluce non+non ?
Ça ne change strictement rien au point indiqué par Michael.
Tant que tu testes sur des navigateurs qui répondent un truc non nul à :
- document.getElementsByTagName
et à :
- document.getElementsByTagName('*')
et à :
- document.getElementsByTagName('*').length
alors le résultat sera le même entre les "&& (...)" que tu utilises et
les "|| (!...)" que je proposais.
En revanche, tous tes tests répondront "ie = false" sur des IE/Win
versions 4 et 5. Cela dit, je m'en fous (je disais bien que ces versions
sont trop vieilles pour que je veuille contourner leurs bugs) mais il
faut le savoir.
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
[...] IE5.x retournera toujours une collection vide, et IE4 ne supporte pas la méthode getElementsByTagName du tout.
[...]
Je voulais dire "true" aux tests directs, et donc "false" aux tests inversés par "!".
voir l'autre soluce non+non ?
Ça ne change strictement rien au point indiqué par Michael.
Tant que tu testes sur des navigateurs qui répondent un truc non nul à : - document.getElementsByTagName et à : - document.getElementsByTagName('*') et à : - document.getElementsByTagName('*').length alors le résultat sera le même entre les "&& (...)" que tu utilises et les "|| (!...)" que je proposais.
En revanche, tous tes tests répondront "ie = false" sur des IE/Win versions 4 et 5. Cela dit, je m'en fous (je disais bien que ces versions sont trop vieilles pour que je veuille contourner leurs bugs) mais il faut le savoir.
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
ASM
Olivier Miakinen wrote:
alors le résultat sera le même entre les "&& (...)" que tu utilises et les "|| (!...)" que je proposais.
absolument pas : mes tests section 2 (ie4...6)
NC4.5 répond TRUE à http://perso.wanadoo.fr/stephane.moriaux/truc/detect_IE_trans_40.htm
et FALSE à http://perso.wanadoo.fr/stephane.moriaux/truc/detect_IE_trans_41.htm
-- Stephane Moriaux et son [moins] vieux Mac
Olivier Miakinen wrote:
alors le résultat sera le même entre les "&& (...)" que tu utilises et
les "|| (!...)" que je proposais.
absolument pas :
mes tests section 2 (ie4...6)
NC4.5 répond TRUE à
http://perso.wanadoo.fr/stephane.moriaux/truc/detect_IE_trans_40.htm
et FALSE à
http://perso.wanadoo.fr/stephane.moriaux/truc/detect_IE_trans_41.htm
http//perso.wanadoo.fr/stephane.moriaux/truc/detect_IE.htm à faire tester par les Macounets les Windoziens et Lunixois.
macos 9.2.2
mozilla 1.3.1 -> est-ce IE ? : false explorer 5.1.7 -> est-ce IE ? : true communicator 4.77 -> est-ce IE ? : undefined -- @@@@@ E -00 comme on est very beaux dis ! ' `) / |_ =="
Le Fou
ASM a écrit
De mon côté j'ai pondu çà : http//perso.wanadoo.fr/stephane.moriaux/truc/detect_IE.htm en seulement 4 lignes ! à faire tester par les Macounets les Windoziens et Lunixois.
Sous Win98SE, ça retourne : "0" avec IE 5.0 "false" avec FF 1.02
-- A'tchao
Le Fou http://www.ffessm-cd84.com/ http://ehiller.club.fr/
ASM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> a écrit
De mon côté j'ai pondu çà :
http//perso.wanadoo.fr/stephane.moriaux/truc/detect_IE.htm
en seulement 4 lignes !
à faire tester par les Macounets les Windoziens et Lunixois.
Sous Win98SE, ça retourne :
"0" avec IE 5.0
"false" avec FF 1.02
--
A'tchao
Le Fou
http://www.ffessm-cd84.com/
http://ehiller.club.fr/
De mon côté j'ai pondu çà : http//perso.wanadoo.fr/stephane.moriaux/truc/detect_IE.htm en seulement 4 lignes ! à faire tester par les Macounets les Windoziens et Lunixois.
Sous Win98SE, ça retourne : "0" avec IE 5.0 "false" avec FF 1.02
-- A'tchao
Le Fou http://www.ffessm-cd84.com/ http://ehiller.club.fr/
Le Fou
ASM a écrit
je propose ce nouveau test : http://perso.wanadoo.fr/stephane.moriaux/truc/detect_IE_trans_41.htm