Bonjour,
Auriez-vous une solution pour que Object.prototype.foo ou Element.prototype.foo fonctionne sous IE ?
Merci.
Bonjour,
Auriez-vous une solution pour que Object.prototype.foo ou Element.prototype.foo fonctionne sous IE ?
Merci.
une fonction ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <script type="text/javascript"> var foo=function(obj){ obj.style.position="absolute"; obj.style.top="200px"; } </script> </head> <body> <div onclick="foo(this)">dfsdfsd</div> </body>
Par exemple :
Mais sous IE...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Object|Element.prototype.remove = function() { this.parentNode.removeChild(this); } document.getElementById("myElement").remove();
Sinon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <script type="text/javascript"> function remove(obj){ obj.parentNode.removeChild(obj) } </script> </head> <body> <div onclick="remove(this)">dfsdfsd</div> </body>
http://www.developpez.net/forums/d19...-fonctions-ie/
Oui merci ; Mais auriez-vous une solution pour écrire ça en objet ?
Comme ceci : sizzle("myElement").html("test").addClass("test")
Je sais qu'il existe jQuery qui est basé sur sizzle mais je n'est pas besoin de toutes les fonctions jQuery, j'ai donc j'essayé de reproduire seules les fonctions nécessaires pour mon projet mais créer ses fonctions directement sur les Object javascript et non pas en utilisant le système de jQuery ou de Prototype.js.
On ne peut appliques de prototype que sur des objets javascript
Là ce sont des objets du DOM ...
Solution :
http://delete.me.uk/2004/09/ieproto.html
![]()
Non Spaffy, tu peux très bien prototyper des objets du DOM, mais comme IE n'implémente pas d'objet Element, il faut d'abord le créer avant d'y appliquer des prototypes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Element.prototype.essai = function(){ alert(this.tagName); } document.getElementsByTagName('div')[0].essai();
Element est indéfini ...
on parle bien de IE ???
les élément html dans IE < 8 ne sont pas des objets javascript, donc pas de prototype (meme si dans IE8 non plus)
Sinon il y a deux classes différente des objet DOM en fonction du navigateur, 'est soit Element, soit HTMLElement.
Faut savoir que l'interpréteur js et dom de IE ne communique pas ou très mal, ce qui a pour effet , des fuites de mémoire à cause d'éléments ayant des évènements ou des propriétées javascript. (en faite que lorsque qu'on supprime l'élément, le ramasse miette fonctionne mal, et donc une partie reste en mémoire)
je pense pas que ce soit une bonne solution, d'une la procédure est couteuse en temps, (a chaque création on recopie des propriétés) , de plus, comme je l ai dit, il peux y avoir un problème de fuite de mémoire, même si dans ce cas précis , il ne s'agit que de référence javascript.
Le mieux serait de créer sa propre classe HTML.Element, pour créer des pseudo élément....
je suis en train de faire un framework , qui implémente cette technique., tu pourra peut-etre prendre des idée dessus.
Je l'ai pas posté sur www.developpez.net, car tros volumineux.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager