[JavaScript]IE9 : blocage lors de l'héritage par proto d'un objet DOM
IE9 : blocage lors de l'héritage par proto d'un objet DOM [JavaScript] - HTML/CSS - Programmation
MarshPosté le 11-01-2011 à 11:18:14
Salut !
Je ne sais pas vraiment s'il s'agit d'un bug ou s'il s'agit d'une fonctionnalité volontairement bloquée. Disons que j'ai un objet Toto qui hérite d'un objet HTMLDivElement. Une instance de Toto devient alors également l'objet HTMLDivElement hérité et est reconnu comme tel. Le blocage intervient lorsqu'on essayes d'accéder aux propriétés et méthodes DOM de l'objet ("Invalid this pointer used as target for method call" ) ou qu'on essayes d'insérer le nœud dans l'arbre ("DOMException: HIERARCHY_REQUEST_ERR (3)" ).
Code :
//on crée le prototype de notre objet
var Toto=function(){
this.appendChild(document.createTextNode('toto')); //on ajoute le texte "toto" à notre div -> erreur "Invalid this pointer used as target for method call"
}
Toto.prototype=document.createElement('div'); //Toto hérite d'un div
var toto=new Toto(); //on instancie Toto qui devrait normalement être un div
alert('toto instanceof HTMLDivElement : '+(toto instanceof HTMLDivElement)); //on vérifie que l'instance est bien un div
document.body.appendChild(toto); //on ajoute notre div au body -> erreur "DOMException: HIERARCHY_REQUEST_ERR (3)"
Le problème, c'est que je ne comprend pas pourquoi ces erreurs sont envoyées alors que le code me parait tout ce qu'il y a de plus valide (il fonctionne d'ailleur très bien sous FF et Chrome, Opera et Safari ne gérant pas l'héritage par prototype)
--------------- Je pense donc tu suis. Crois moi, je suis zététicien.
Marsh Posté le 11-01-2011 à 11:18:14
Salut !
Je ne sais pas vraiment s'il s'agit d'un bug ou s'il s'agit d'une fonctionnalité volontairement bloquée.
Disons que j'ai un objet Toto qui hérite d'un objet HTMLDivElement. Une instance de Toto devient alors également l'objet HTMLDivElement hérité et est reconnu comme tel.
Le blocage intervient lorsqu'on essayes d'accéder aux propriétés et méthodes DOM de l'objet ("Invalid this pointer used as target for method call" ) ou qu'on essayes d'insérer le nœud dans l'arbre ("DOMException: HIERARCHY_REQUEST_ERR (3)" ).
Le problème, c'est que je ne comprend pas pourquoi ces erreurs sont envoyées alors que le code me parait tout ce qu'il y a de plus valide (il fonctionne d'ailleur très bien sous FF et Chrome, Opera et Safari ne gérant pas l'héritage par prototype)
---------------
Je pense donc tu suis. Crois moi, je suis zététicien.