IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

dynContext : this.popup.document a une valeur null


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut dynContext : this.popup.document a une valeur null
    Bonjour à tous.

    J'ai un problème avec dynContext (http://www.phpguru.org/static/dynContext.html). Le principe de ce script, pour ceux qui ne le connaisse pas, est de créer un menu contextuel personnaliser sur certains objets. A l'installation du script, je n'ai eut aucun problème avec Firefox, mais avec IE, sa coince :/ Il me fait une erreur en me disant : "this.popup.document a la valeur Null ou n'est pas un objet". Ayant un niveau plutôt "faible" en javascript, je doit dire que je ne vois pas trop bien comment pallier au problème...

    Après avoir farfouiller un peu partout dans le code, j'ai pu remarquer que l'erreur venait de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc = this.popup.document.open('text/html');
    De ce que je sais, il me semble que les mots "popup" et "document" sont des mots clefs du langage JS (corrigez moi si je me trompe). Je ne vois donc pas très bien pourquoi IE n'arrive pas à interpréter cette intruction. "this" est défini (c'est un objet), this.popup est defini aussi (= true), mais this.popup.document ne l'est pas...

    voila, sinon l'instruction précédente est celle-ci :
    Et le code de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dynContext.prototype.createPopup = function ()
        {
            //if (!this.popup) { // Fix bug in recent (latest) IE6 (maybe XP SP2?)
            this.popup = this.windowObj ? this.windowObj.createPopup() : window.createPopup();
            //}
        }
    J'ai essayé en décommentant les 2 lignes //, mais ça ne fonctionne pas non plus.

    Comme je vous l'ai dit, mon niveau en JS est plutôt faible donc il est possible que je donne des informations inutiles, auquel cas veuillez m'excuser

    Voila, si quelqu'un a une idée pour résoudre mon problème... merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut
    Personne pour m'aider ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut
    Je ne trouve vraiment pas là, un coup de main serait franchement le bienvenu... Serait-il possible d'initialiser this.popup.document afin d'en faire un objet ? La je doit dire que je calle. Je pédale dans la semoule depuis le debut de la journée sans arrivé à rien et je n'ai pas le début du moindre indice de la raison pour laquelle sa ne marche pas... Au point ou j'en suis toute idée, suggestion, piste, farfelue ou non sera la bienvenue.

    S'il vous plait, aidez un pauvre développeur au bord de la déprime

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    est-ce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dynContext.prototype.createPopup = function ()
        {
            if (!this.popup) { // Fix bug in recent (latest) IE6 (maybe XP SP2?)
            this.popup = this.windowObj ? this.windowObj.createPopup() : window.createPopup();
            }
        }
    est ta seule méthode ?

    Sinon tu peux essayer sans utiliser "prototype" (ll me manque des infos sur la déclaration de dynContext masi voici une manière de procéder ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    /** Definiton de l objet dynContext **/
    dynContext = function()
    {
     //Déclaration des variables...par exemple :
     this.variable1 = 1; 
     this.variable2 =  2;
     
     //Declaration de la fonction :
        this.createPopup = function ()
        {
            //if (!this.popup) { // Fix bug in recent (latest) IE6 (maybe XP SP2?)
            this.popup = this.windowObj ? this.windowObj.createPopup() : window.createPopup();
            //}
        }
    }
     
    /** Creation de l objet **/
    var monObjet = new dynContext();
     
    /** Appel de la methode **/
    monObjet.createPopup();

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut
    Malheureusement, ça ne semble pas marché non plus... Il me dit que "cet objet ne gère pas cette propriété ou cet méthode".

    Si sa peut aider je met les fichiers sources d'origine de dynContext pour msie (un autre fichier est nécessaire pour FireFox, mais celui là ne semble pas poser problème)

    Voila égalemment les différents appels au script :

    Dans ma page principale (admin.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script language="javascript" type="text/javascript">
      <!--
          dynContext_path = 'include/';
      // -->
      </script>
     
      <script language="Javascript" src="include/dynContext.js"></script>
    Et dans le code de l'objet php qui s'en sert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <script type='text/javascript'>
     
            var id_dossier;
     
            /* Ensemble de fonction de définition des action */
            function modifier_dossier()
            {
                document.location = 'admin.php?mod=depot&act=modDossier&id='+id_dossier;
            }
     
            function supprimer_dossier()
            {
              var id_d = id_dossier;
              if(confirm('Etes-vous sur de vouloir supprimer définitivement ce dossier ainsi que son contenu ?')){
                document.location = 'admin.php?mod=depot&act=supp&id='+id_d;
              }
            }
     
            // Définit l'id du dossier sélectionné
            function set_id_dossier(id){
              id_dossier = id;
            }
     
            // Création du menu contextuel
            myMenu = new dynContext('myMenu', '/stylesDynContext/dynContext.xp.css', 180, 0);
            myMenu.setImagePath('/images/');
            myMenu.addItem(new dynContext_menuItem('Modifier', 'modifier_dossier'));
            myMenu.addItem(new dynContext_menuItem('supprimer', 'supprimer_dossier'));
     
          </script>
    Et enfin, l'appel au menu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onmouseover=\"set_id_dossier($id);\" oncontextmenu=\"myMenu.show(event); return false\"
    Voila, je pense que tout les éléments sont là...

    Merci d'avoir pris du temps pour mon problème.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    j'ai vu ton code, a priori il est bon. Visiblement c'est createPopup()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.popup = this.windowObj ? this.windowObj.createPopup() : window.createPopup();
    fait planter le navigateur.

    Juste pour un test : est-ce qu'un simple alert() passe ?
    Regarde voir si tu ne peux pas remplacer createPopup() par window.open()

Discussions similaires

  1. document.getElementById retourne une valeur Null..
    Par jpe54 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/04/2013, 16h01
  2. [vb.net] tester une valeur nulle de maniere elegante
    Par graphicsxp dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/08/2005, 15h36
  3. Réponses: 3
    Dernier message: 10/08/2005, 11h11
  4. Affcecter une valeur NULL dans une requete paramétrée
    Par thiouwz2 dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/11/2004, 15h02
  5. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo