2010-12-14 50 views
3

Avec cette html:propriétés définies sur __proto__ override propriétés directement dans Chrome définies

<select><option>hi</option></select> 

<script type="text/javascript"> 

var select = document.getElementsByTagName("select")[0]; 

select.__proto__.setValue = "foo"; 
select.setValue = "bar"; 

alert(select.setValue); 

</script> 

Dans Firefox et Opera, la sortie est "bar", mais dans Chrome, la sortie est "foo". Si je saute la définition __proto__, tous les navigateurs affichent "barre".

Comment obtenir que Chrome (8.0) affiche la valeur spécifique à l'objet de la propriété, au lieu de la valeur définie sur le prototype?

+0

Fonctionne comme prévu dans Chrome 9 et 10, donc c'est probablement un bug. Comme une note de côté, ne plaisante pas avec les objets intégrés, cela reste vrai pour HTMLElements. –

+2

@Ivo: Je peux confirmer que cela ne fonctionne pas dans Chrome 8. En passant, je suppose que c'est ce qui se passe lorsque plusieurs navigateurs tentent d'implémenter la même fonctionnalité non standard - au moins l'un d'eux est forcément mauvais :-p –

+1

@AndyE Je suis sûr que je pourrais trouver un bug quelque part sur la liste des problèmes, c'est-à-dire si je passe les deux prochains jours à la chercher. –

Répondre

1

Comme décrit dans les commentaires ci-dessus, il est résolu dans la version actuelle de Chrome.