Prototypage sur Document, erreur Internet Explorer

Résolu
Signaler
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour à vous,
voilà j'avais dans l'idée de mettre en place des méthodes sur l'objet Document ( afin d'optimiser certains de mes traitements ). Je me jette à l'eau et écris 3 méthodes ( ci-jointes ). J'inclus mon script dans un fichier html ( <script language= ... src=.... >)
et je lance Firefox, aucun problème, tout va bien !
Mais hélas, j'ai voulu tester avec ce brave IE ( 7.0 ) et la, v'lan l'erreur : Document est indéfini !!!

Si vous aviez une idée, une solution... Pour le moment, j'ai capituler sur le prototypage de Document, mais je vais persister !!!!

Le code :
/**********************************************/
/*             Prototypage de Document                            */
/**********************************************/

/**
* Ajoute un objet à la collection d'objet
*
* @param _obj
*                Objet à ajouter.
* @return L'index dans la collection d'objet
*/
Document.prototype.register = function (_obj){
    if( this.objects == null){
        this.objects = new Array();
    }
    this.objects.push ( _obj );
    return (this.objects.length -1);
}

/**
* Retourne un objet en fonction de son index.
*
* @param _index
*/
Document.prototype.getRegister = function (_index){
    return this.objects[_index];
}

/**
* Supprime un objet de la collection
*
* @param _index
*/
Document.prototype.unRegister = function (_index){
    this.objects[_index ] = null;
}

Rien d'éxceptionnel !

[o-_-o]

8 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
ça baigne !?!     ;o)      FF ok, IE ko.
tenté plusieurs choses   document au lieu de Document
                                        mis le script derrière
                                        ...
résultat : pareil.       faut donc aller plus loin.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
6
ça fait un moment que je me casse la bugne sur ce problème, alors.....
Mais un grand merci à toi !!!!!
En effet, j'ai trouvé youki yah !!!
ci-joint la correction . Ne pas utiliser prototype et utiliser document.:

<html>
    <head>
        <title>Document.prototype don't work with IE ???</title>
                    <script>
            /**********************************************/
            /*             Prototypage de Document                            */
            /**********************************************/
           
            /**
            * Ajoute un objet à la collection d'objet
            *
            * @param _obj
            *                Objet à ajouter.
            * @return L'index dans la collection d'objet
            */
            document.register = function (_obj){
                if( this.objects == null){
                    this.objects = new Array();
                }
                this.objects.push ( _obj );
                return (this.objects.length -1);
            }
           
            /**
            * Retourne un objet en fonction de son index.
            *
            * @param _index
            */
            document.getRegister = function (_index){
                return this.objects[_index];
            }
           
            /**
            * Supprime un objet de la collection
            *
            * @param _index
            */
            document.unRegister = function (_index){
                this.objects[_index ] = null;
            }
           
            /**
            * Fonction de démarage
            */
            var idx;
            function main (){
                idx = document.register("Hello JavaScript ;o)" );
            }
            /**
            * Retourne la valeur stocké dans document.
            */
            function check(){
                alert ( document.getRegister(idx)) ;
            }
        </script>
    </head>
   
           

   
</html>

Mais pourquoi que j'y avais pas pensé avant ???? des fois je me demande
du coup j'accepte ta réponse.
[o-_-o]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

>> Pour le moment, j'ai capitulé sur le prototypage de Document, mais je vais persister !!!!
    ça doit pouvoir apporter plein de choses...

    peux-tu nous donner un ch'tit exemple d'utilisation ?
       le plus simple possible !
       je n'arrive à faire fonctionner sur aucun navigateur !
            ( mais je ne suis pas doué !!! )





<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
6
Mon problème est qu'en fait je l'ai intégrer à une gestion complète de fenêtre...
Je vais faire un petit script rapidos...

et c'est parti...

<html>
    <head>
        <title>Document.prototype don't work with IE ???</title>
        <script>
            /**********************************************/
            /*             Prototypage de Document                            */
            /**********************************************/
           
            /**
            * Ajoute un objet à la collection d'objet
            *
            * @param _obj
            *                Objet à ajouter.
            * @return L'index dans la collection d'objet
            */
            Document.prototype.register = function (_obj){
                if( this.objects == null){
                    this.objects = new Array();
                }
                this.objects.push ( _obj );
                return (this.objects.length -1);
            }
           
            /**
            * Retourne un objet en fonction de son index.
            *
            * @param _index
            */
            Document.prototype.getRegister = function (_index){
                return this.objects[_index];
            }
           
            /**
            * Supprime un objet de la collection
            *
            * @param _index
            */
            Document.prototype.unRegister = function (_index){
                this.objects[_index ] = null;
            }
           
            /**
            * Fonction de démarage
            */
            var idx;
            function main (){
                idx = document.register("Hello JavaScript ;o)" );
            }
            /**
            * Retourne la valeur stocké dans document.
            */
            function check(){
                alert ( document.getRegister(idx)) ;
            }

        </script>
    </head>
   
           
   
</html>

Normalement, lors du click sur le bouton, affiche "hello JavaScript ;o)"
ok sur FF ( 2.0.8)
pok sur IE (7)

[o-_-o]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
ben... je s'y suis pour rien.

comme quoi, poser une question et on résoud souvent tout seul !

néanmoins, pas de raisons que prototype ne marche pas,
    mais avec IE pas sur Document, qu'il ne connait pas,
    sur l'object DOM comme dit FirefOx ( alert Document.prototype )

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]




    on ne dit pas néanmoins, mais handicap nasal.     
Messages postés
166
Date d'inscription
mercredi 27 juin 2007
Statut
Membre
Dernière intervention
31 mars 2014
1
bultez+++

Signé Sagat
Messages postés
514
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009

Je viens après la guerre, mais j'ai peut-être quand même une explication : document est une instance, pas une classe ... Donc utiliser prototype ne correspond à rien, vu qu'on ne fait jamais new document() ...
LocalStone
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>>Je viens après la guerre,
    pas du tout.


>>document est une instance, pas une classe
    "très bonne remarque", effectivement.
    zobibol utilisait Document   ( non = document ) avec FF,
        inconnu (?) de IE chez qui il faudrait trouver l'équivalent
       [  alert(Document+"\r\n"+document); ]



<hr />                Cordialement            Bul         [mon Site]     [M'écrire]