11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'aimerais étendre la classe HTMLElement.
Mon code fonctionne bien sous FF et Opéra mais pas sous IE6.
Je ne pense donc pas qu'il s'agisse d'un problème de syntaxe d'autant plus que lorsque j'étends la classe Array, je ne rencontre pas de problème.

Avec le script de test ci-dessous, pour que l'instruction alert('test') s'exécute sous IE6 je dois placer l'extension de HTMLElement en commentaire. Si je ne le fais pas, rien ne se passe (même pas une erreur JS)


Array.prototype.testArray = function() {
	return true;
}

HTMLElement.prototype.testHTMLElement = function() {
	return true;
}

alert('test');


Peut-être que HTMLElement n'est pas supporté entièrement sous IE6.
Dans ce cas, comment puis-je m'y prendre ?

Merci pour votre aide
Modifié par Mathieu_vd (27 Nov 2006 - 09:43)
Merci pour le lien QuentinC.
C'est pas que je n'ai pas cherché, j'ai plutôt pas trouvé...

Je n'ai jamais utilisé de fichier .htc et je ne sais d'ailleurs même pas ce que c'est exactement. (le fait qu'il soit appelé par une CSS m'étonne bcp...)

D'autre part, est-ce que le script.js de cette solution peut-être placé dans un commentaire conditionnel ou est-il également utile à FF et Opéra ?

En tout cas, il semble qu'il ne soit effectivement pas possible d'étendre HTMLElement sous IE6 mais la solution proposée me semble un peu lourde.
Je pense donc qu'au lieu d'étendre HTMLElement, je vais opté pour la création d'une fonction ou l'élément sera passé en paramètre.
C'est peut-être moins beau mais ça suffira pour ce que je dois faire.

Maintenant si quelqu'un à une autre idée je reste preneur...
Modifié par Mathieu_vd (24 Nov 2006 - 17:12)
Salut,
moi aussi quand j'ai trouvé cette réponse je cherchais à faire un script cross-browser qui utilise correctement le DOM.
J'ai donc fusionné 2 exemples (les seuls) que j'avais trouvé sur cette problématique.
Le script "script.js" peut être utilisé dans un commentaire conditionnel excepté le script marqué en bleu (à la fin du code exemple) pour tester l'implémentation.

Pour un besoin assez restreint je pense que la solution est à eviter, comme tu le dit un peu lourde qui plus est peut sans doute être améliorée.

Hélas Microsoft n'a pas encore décidé (à ce que je me souvienne) de supporter cette fonctionnalité pourtant assez basique qui permettrai à certaines choses d'êtres plus simple (exemple : addEventListener pour addEvent) ...
Ben moi non plus je ne sais pas à quoi servent les fichiers .htc d'habitude, si ça peut te rassurer. De toute façon c'est un truc spécifique à Microsoft qui n'intéressera personne dans un forum comme celui-ci qui prone les standards.