Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Réflexion en Javascript : PropertyValue

18 réponses
Avatar
Gloops
Bonjour tout le monde,

J'ai vu sur

http://www.tutorialspoint.com/javascript/javascript_forin_loop.htm

qu'on pouvait parcourir, par exemple, les propriétés du navigateur ainsi :

for (aProperty in navigator) {
document.write(aProperty);
document.write("<br />");
}

et ça affiche bravement les noms des propriétés du navigateur.

Alors du coup, je me pose la question de comment on peut terminer ce
travail ?

J'ai essayé avec navigator.getPropertyValue(aProperty), mais ça ne se
contente pas de ne pas me retourner la valeur de la propriété, ça plante
la boucle. L'exécution du script se poursuit après la boucle.

Si j'en crois d'autres docs, getPropertyValue peut être une bonne idée
avec d'autres objets, mais pas avec navigator.

Ma première tentative avait été aProperty.value, avec et sans V
majuscule : c'est moins catastrophique puisque toute la boucle
s'exécute, mais il m'annonce toutes les propriétés avec valeur
undefined, ce sur quoi j'ai un gros doute.

Meilleure idée ?

10 réponses

1 2
Avatar
SAM
Le 05/08/16 à 21:16, Gloops a écrit :
Bonjour tout le monde,
J'ai vu sur
http://www.tutorialspoint.com/javascript/javascript_forin_loop.htm

Ha! Merdum ! C'est de l'anglishe (ou de l'amerlock ?)
qu'on pouvait parcourir, par exemple, les propriétés du navigateur ainsi :
for (aProperty in navigator) {
document.write(aProperty);
document.write("
");
}
et ça affiche bravement les noms des propriétés du navigateur.
Alors du coup, je me pose la question de comment on peut terminer ce
travail ?

"terminer" ? "travail" ?
Le terminé de document.write()
c'est document.close();
Le commencé de document.write()
c'est document.open();
à défaut de fermer l'écriture, normalement le navigateur et au moins
Firefox a sa roue (ou jauge) de remplissage qui tourne (il attend la suite)
(snip)
Meilleure idée ?

var t='', b=[];
for(var i in navigator) {
b.push('navigator.' + i + ' ==> ' + navigator[i]); }
alert(b.join('n'));
t=b=i=null;
????
sans savoir si ça répond à la question ?!
(que je n'ai pas comprise ... que cherche t-il donc à faire exactement ?)
var b=[];
for(var i in navigator.plugins)
b.push(i+' = '+navigator.plugins[i].name+'n');
alert(b.join())
b=i=null;
Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
Gloops
Le 08/08/2016 à 00:57, SAM a écrit :
Le 05/08/16 à 21:16, Gloops a écrit :
Bonjour tout le monde,
J'ai vu sur
http://www.tutorialspoint.com/javascript/javascript_forin_loop.htm

Ha! Merdum ! C'est de l'anglishe (ou de l'amerlock ?)

Ah ben ... oui, désolé.
qu'on pouvait parcourir, par exemple, les propriétés du navigateur
ainsi :
for (aProperty in navigator) {
document.write(aProperty);
document.write("
");
}
et ça affiche bravement les noms des propriétés du navigateur.
Alors du coup, je me pose la question de comment on peut terminer ce
travail ?

"terminer" ? "travail" ?
Le terminé de document.write()
c'est document.close();
Le commencé de document.write()
c'est document.open();
à défaut de fermer l'écriture, normalement le navigateur et au moins
Firefox a sa roue (ou jauge) de remplissage qui tourne (il attend la suite)

Ah non chez moi quand il a fini de charger la page l'extended statusbar
affiche 100%, et ... ça veut dire ça y est chef, travail fini.
Il y met le temps, mais ... ça, c'est une autre question.
On n'a pas idée d'installer autant d'extensions sur une machine
pareille, aussi. :)
(snip)
Meilleure idée ?

var t='', b=[];
for(var i in navigator) {
b.push('navigator.' + i + ' ==> ' + navigator[i]); }
alert(b.join('n'));
t=b=i=null;
????
sans savoir si ça répond à la question ?!
(que je n'ai pas comprise ... que cherche t-il donc à faire exactement ?)
var b=[];
for(var i in navigator.plugins)
b.push(i+' = '+navigator.plugins[i].name+'n');
alert(b.join())
b=i=null;
Cordialement,

Ben ... oui, c'est bien ça. Merci.
Pour moi, une propriété, ça sert à avoir un contenu, et quand on a dit
que navigator a pour propriétés appName et appVersion, on n'a pas
terminé, il reste encore à dire :
appName ==> Netscape
appVersion ==> 5.0 (Windows)
Je cherchais la syntaxe navigator[aProperty].
C'est vrai que c'est somme toute courant, mais ... mon neurone ne
s'allumait pas.
A supposer qu'on veuille l'écrire sur la page web :
for(property in navigator)
{
document.write(property);
document.write(" ==> ");
document.write(navigator[property]);
document.write("
");
}
Avatar
Gloops
Le 08/08/2016 à 03:21, Gloops a écrit :
Le 08/08/2016 à 00:57, SAM a écrit :
Le 05/08/16 à 21:16, Gloops a écrit :
Bonjour tout le monde,
J'ai vu sur
http://www.tutorialspoint.com/javascript/javascript_forin_loop.htm

Ha! Merdum ! C'est de l'anglishe (ou de l'amerlock ?)

Ah ben ... oui, désolé.
qu'on pouvait parcourir, par exemple, les propriétés du navigateur
ainsi :
for (aProperty in navigator) {
document.write(aProperty);
document.write("
");
}
et ça affiche bravement les noms des propriétés du navigateur.
Alors du coup, je me pose la question de comment on peut terminer ce
travail ?

"terminer" ? "travail" ?
Le terminé de document.write()
c'est document.close();
Le commencé de document.write()
c'est document.open();
à défaut de fermer l'écriture, normalement le navigateur et au moins
Firefox a sa roue (ou jauge) de remplissage qui tourne (il attend la
suite)

Ah non chez moi quand il a fini de charger la page l'extended statusbar
affiche 100%, et ... ça veut dire ça y est chef, travail fini.
Il y met le temps, mais ... ça, c'est une autre question.
On n'a pas idée d'installer autant d'extensions sur une machine
pareille, aussi. :)
(snip)
Meilleure idée ?

var t='', b=[];
for(var i in navigator) {
b.push('navigator.' + i + ' ==> ' + navigator[i]); }
alert(b.join('n'));
t=b=i=null;
????
sans savoir si ça répond à la question ?!
(que je n'ai pas comprise ... que cherche t-il donc à faire exactement ?)
var b=[];
for(var i in navigator.plugins)
b.push(i+' = '+navigator.plugins[i].name+'n');
alert(b.join())
b=i=null;
Cordialement,

Ben ... oui, c'est bien ça. Merci.
Pour moi, une propriété, ça sert à avoir un contenu, et quand on a dit
que navigator a pour propriétés appName et appVersion, on n'a pas
terminé, il reste encore à dire :
appName ==> Netscape
appVersion ==> 5.0 (Windows)
Je cherchais la syntaxe navigator[aProperty].
C'est vrai que c'est somme toute courant, mais ... mon neurone ne
s'allumait pas.
A supposer qu'on veuille l'écrire sur la page web :
for(property in navigator)
{
document.write(property);
document.write(" ==> ");
document.write(navigator[property]);
document.write("
");
}

Tant qu'on y est, si on veut deux colonnes :
bfonce = false;
document.write("<table>")
for(property in navigator)
{
bfonce = !bfonce;
if(bfonce)
{
document.write("<tr style='background-color:#dedede'><td>")
}
else
{
document.write("<tr><td>")
}
document.write(property);
document.write("</td><td>");
document.write(navigator[property]);
document.write("</td></tr>");
}
document.write("</table>")
Avatar
Gloops
Le 08/08/2016 à 00:57, SAM a écrit :
Le 05/08/16 à 21:16, Gloops a écrit :
Bonjour tout le monde,
J'ai vu sur
http://www.tutorialspoint.com/javascript/javascript_forin_loop.htm

Ha! Merdum ! C'est de l'anglishe (ou de l'amerlock ?)
qu'on pouvait parcourir, par exemple, les propriétés du navigateur
ainsi :
for (aProperty in navigator) {
document.write(aProperty);
document.write("
");
}
et ça affiche bravement les noms des propriétés du navigateur.
Alors du coup, je me pose la question de comment on peut terminer ce
travail ?

"terminer" ? "travail" ?
Le terminé de document.write()
c'est document.close();
Le commencé de document.write()
c'est document.open();
à défaut de fermer l'écriture, normalement le navigateur et au moins
Firefox a sa roue (ou jauge) de remplissage qui tourne (il attend la suite)
(snip)
Meilleure idée ?

var t='', b=[];
for(var i in navigator) {
b.push('navigator.' + i + ' ==> ' + navigator[i]); }
alert(b.join('n'));
t=b=i=null;
????
sans savoir si ça répond à la question ?!
(que je n'ai pas comprise ... que cherche t-il donc à faire exactement ?)
var b=[];
for(var i in navigator.plugins)
b.push(i+' = '+navigator.plugins[i].name+'n');
alert(b.join())
b=i=null;
Cordialement,

Un point m'avait échappé.
for(prop in navigator)
{
document.write(prop + navigator[prop] + "
");
}
s'exécute bien, mais en m'affichant ça dans la console :
/*
Exception: [Exception... "Component is not available" nsresult:
"0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame ::
Scratchpad/2 :: <TOP_LEVEL> :: line 12" data: no]
*/
C'est-à-dire, erreur : composant navigator non défini.
La même syntaxe avec document affiche les propriétés de document (et
leurs valeurs) sans rechigner.
Si je tape
document.write(navigator[appName]);
il m'affiche bien Netscape, mais en protestant que appName n'existe pas.
Tandis que
document.write(navigator.appName);
s'exécute sans erreur, mais cette syntaxe ne permet pas de parcourir les
propriétés.
Avatar
Gloops
Le 08/08/2016 à 10:04, Gloops a écrit :
Le 08/08/2016 à 00:57, SAM a écrit :
Le 05/08/16 à 21:16, Gloops a écrit :
Bonjour tout le monde,
J'ai vu sur
http://www.tutorialspoint.com/javascript/javascript_forin_loop.htm

Ha! Merdum ! C'est de l'anglishe (ou de l'amerlock ?)
qu'on pouvait parcourir, par exemple, les propriétés du navigateur
ainsi :
for (aProperty in navigator) {
document.write(aProperty);
document.write("
");
}
et ça affiche bravement les noms des propriétés du navigateur.
Alors du coup, je me pose la question de comment on peut terminer ce
travail ?

"terminer" ? "travail" ?
Le terminé de document.write()
c'est document.close();
Le commencé de document.write()
c'est document.open();
à défaut de fermer l'écriture, normalement le navigateur et au moins
Firefox a sa roue (ou jauge) de remplissage qui tourne (il attend la
suite)
(snip)
Meilleure idée ?

var t='', b=[];
for(var i in navigator) {
b.push('navigator.' + i + ' ==> ' + navigator[i]); }
alert(b.join('n'));
t=b=i=null;
????
sans savoir si ça répond à la question ?!
(que je n'ai pas comprise ... que cherche t-il donc à faire exactement ?)
var b=[];
for(var i in navigator.plugins)
b.push(i+' = '+navigator.plugins[i].name+'n');
alert(b.join())
b=i=null;
Cordialement,

Un point m'avait échappé.
for(prop in navigator)
{
document.write(prop + navigator[prop] + "
");
}
s'exécute bien, mais en m'affichant ça dans la console :
/*
Exception: [Exception... "Component is not available" nsresult:
"0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame ::
Scratchpad/2 :: <TOP_LEVEL> :: line 12" data: no]
*/
C'est-à-dire, erreur : composant navigator non défini.
La même syntaxe avec document affiche les propriétés de document (et
leurs valeurs) sans rechigner.
Si je tape
document.write(navigator[appName]);
il m'affiche bien Netscape, mais en protestant que appName n'existe pas.
Tandis que
document.write(navigator.appName);
s'exécute sans erreur, mais cette syntaxe ne permet pas de parcourir les
propriétés.

Ah, j'ai trouvé :
document.write(this.navigator[prop])
s'exécute sans erreur.
Le navigateur est Firefox 48.0, sur Windows XP Home SP3
Avatar
SAM
Le 08/08/16 à 03:36, Gloops a écrit :
Tant qu'on y est, si on veut deux colonnes :
bfonce = false;
document.write("<table>")

AAAaaRRRrrGGGggHHHhhh !!!
var ecrit = [];
for(var propriete in navigator) {
ecrit.push('nt<dt>navigator.' + propriete +
'</dt>ntt<dd>' + navigator[propriete] +'</dd>');
}
document.write('<dl>' + ecrit.join('') +'n</dl>');
ecrit=propriete=null;
Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
SAM
Le 08/08/16 à 03:36, Gloops a écrit :
bfonce = !bfonce;
if(bfonce)
{
document.write("<tr style='background-color:#dedede'><td>")
}
else
{
document.write("<tr><td>")
}

bfonce = !bfonce;
document.write('<tr'+(bfonce?' style="background:#dedede"':'')+'><td>');
Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
SAM
Le 08/08/16 à 10:04, Gloops a écrit :
Un point m'avait échappé.
for(prop in navigator)
{
document.write(prop + navigator[prop] + "
");
}
s'exécute bien, mais en m'affichant ça dans la console :

Est-ce que :
for(prop in navigator)
{
document.write(prop + eval('navigator.'+prop) + "
");
}
résoudrait ton problème ?
(pas testé)
Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
Gloops
Le 08/08/2016 à 12:04, SAM a écrit :
Le 08/08/16 à 03:36, Gloops a écrit :
Tant qu'on y est, si on veut deux colonnes :
bfonce = false;
document.write("<table>")

AAAaaRRRrrGGGggHHHhhh !!!
var ecrit = [];
for(var propriete in navigator) {
ecrit.push('nt<dt>navigator.' + propriete +
'</dt>ntt<dd>' + navigator[propriete] +'</dd>');
}
document.write('<dl>' + ecrit.join('') +'n</dl>');
ecrit=propriete=null;
Cordialement,

Ah oui, pour prendre moins de largeur ?
Avatar
Gloops
Le 08/08/2016 à 12:04, SAM a écrit :
Le 08/08/16 à 03:36, Gloops a écrit :
bfonce = !bfonce;
if(bfonce)
{
document.write("<tr style='background-color:#dedede'><td>")
}
else
{
document.write("<tr><td>")
}

bfonce = !bfonce;
document.write('<tr'+(bfonce?' style="background:#dedede"':'')+'><td>');
Cordialement,

Effectivement, ça évite de prendre les deux tiers de la hauteur du code
pour une instruction.
1 2