11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous mon problème est simple.

Javascript:

    Element.prototype.test = function () {
          alert('test');
    }


Quand j'applique test() sur un élément récupéré par un document.getElementById() ça ne marche pas sous IE (7 car je travaille sur Vista).
Testé et approuvé sour Opera et FireFox.

Javascript:

    tmp = document.getElementById('iDdUnElementQuiExisteBien');
    //ou
    tmp = document.createElement('div');
    tmp.test();



J'ai fait quelques recherche sous Google sans résultats très intéressant Smiley ohwell .

Quelqu'un a t'il déjà eu ce problème ??
Modifié par MoOx (01 Mar 2007 - 23:47)
Sympa le lien.
Un truc que j'ai pas trop pigé le coup du fichier behavior.htc.

En faite je voulais rajouter un fonction que j'ai écrite à la classe Element qui permet de placer un element à coté d'un autre en fonction de la position.

Je voulais remplacer ça :

function placeNear(element, elementDeReference, positionRelative) {...}


Par ça :

Element.prototype.placeNear(elementDeReference, positionRelative) {...}


Ainsi c'est plus sympa de faire un petit ...

... $('maDiv').placeNear('lAutreDiv','top-left');
//$() provient de protoype.js ... remplace document.getElementById


... qu'un ...

... placeNear(document.getElementById('maDiv'), 'lAutreDiv', 'top-left');

Smiley cligne

Enfin si ça marche pas sous IE c'est bien con.

En faite je pensez à l'ajouter dans prototype.js directement dans le code là où il créer les méthodes supplémentaires à la classe Element, mais ça fait chier de toucher le superbe de code de prototype.js (en plus je comprend pas tout dedans)....
Franchement, en l'état actuel des implémentations, ça me parait un peu risqué de jouer avec le prototype de Element.

En plus, tu as toujours le risque d'interactions avec d'autres scripts puisque tu modifies quelque chose qui est utilisé partout.
Tu n'as pas tord. Je dirais même que tu as raison.
Alors je me contenterais de ...

function placeNear(element, elementDeReference, positionRelative) {...}
//...
... placeNear($('maDiv'), 'lAutreDiv', 'top-left');  //  [smile]


Alors je considère que c'est résolu. Merci de l'efficacité de ce forum. Je crois que je vais devenir un adepte (c'est pas que j'ai souvent des problèmes non, non... ^^