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 :

Partage de variables entre processus Internet Explorer


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 18
    Points
    18
    Par défaut Partage de variables entre processus Internet Explorer
    Bonjour a tous et a toutes

    j'ai une problématique :

    Je dois faire fonctionner une application métier qui au moment de se lancer vérifie qu'elle est bien exécutée dans un processus IE distinct.
    Au moment d'ouvrir deux fois l'application, en ouvrant deux fenêtres IE distincte (pas d'onglets)
    Le code m'indique que l'application est déjà ouverte.

    je précise que je lance a chaque fois internet explorer avec l'argument "-noframemerging" qui indique a IE qu'il ne dois pas fusionner les onglets


    Les développeurs m'ont donné la portions de code qui effectue ce test.
    En PJ "Test001.html" la portion de code qui permet d'ouvrir l'application (ici il ouvre un fichier texte, pour les besoins du test)
    En PJ "Test002.html" la même portion de code qui me permet de d'ouvrir une nouvelle fenêtre et de vérifier si elle existe déjà dans ce processus

    Plateforme :
    Windows 7 x64
    Internet Explorer 11

    Je suis administrateur système et malgré mes recherches je ne trouve pas le paramètre qui permet d'isoler les processus Internet Explorer les un des autres.

    Merci d'avance pour votre aide
    (si ce post n'est pas au bon endroit, je le recréerait ou il faudra)

    Test0001.html
    Code html : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <!DOCTYPE html> 
    <html> 
        <head> 
            <title></title> 
     
        </head> 
        <body> 
    		<script> 
              
                                      var popupName = 'BravoSamse',
                                              popupProperties = 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=1020,height=740,top=0,left=0',
                                              popup = undefined;
                                      try {
                                                                    // Renvoie un pointeur vers la popup, ou plante avec le 
                                                                    // msg "Accès refusé" si la popup contient une page issue
                                                                    // d'un autre domaine 
                                                                    popup = window.open('', popupName, popupProperties);
                                      } catch(e) {}
                                      
                                      if (popup == undefined || popup.document.URL !== "about:blank") {
                                                                    // La popup existe déjà dans ce processus 
                                                                    alert("Impossible d'ouvrir à nouveau ****** depuis cette fenêtre.\nOuvrez une nouvelle fenêtre pour accèder à ******.");
                                                                    // On revient sur la page précédente
                                                                    //window.history.go(-1);
                                                                    
                                      } else {
                                                                    popup.close();
                                                                    // On ouvre à nouveau la popup
                                                                    popup = window.open('pouet.txt', popupName, popupProperties)
                                                                    setTimeout(function () {
                                                                                               // Fermeture de la fenêtre principale
                                                                            window.open('', '_self', '');
                                                                            window.close();
                                                                    }, 0);
                                      }
     
                    </script>
        </body> 
    </html>
    Test0002.html
    Code html : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <!DOCTYPE html> 
    <html> 
        <head> 
            <title>window open and close method</title> 
     
        </head> 
        <body> 
    		<script> 
              
                                      var popupName = 'BravoSamse',
                                              popupProperties = 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=1020,height=740,top=0,left=0',
                                              popup = undefined;
                                      //try {
                                                                    // Renvoie un pointeur vers la popup, ou plante avec le 
                                                                    // msg "Accès refusé" si la popup contient une page issue
                                                                    // d'un autre domaine 
                                                                    popup = window.open('', popupName, popupProperties);
                                                                    alert(popup.document.URL)
                                                                    
                                     /* } catch(e) {}
                                      
                                      if (popup == undefined || popup.document.URL !== "about:blank") {
                                                                    // La popup existe déjà dans ce processus 
                                                                    alert("Impossible d'ouvrir à nouveau ****** depuis cette fenêtre.\nOuvrez une nouvelle fenêtre pour accèder à ******.");
                                                                    // On revient sur la page précédente
                                                                    //window.history.go(-1);
                                                                    
                                      } else {
                                                                    popup.close();
                                                                    // On ouvre à nouveau la popup
                                                                    popup = window.open('pouet.txt', popupName, popupProperties)
                                                                    setTimeout(function () {
                                                                                               // Fermeture de la fenêtre principale
                                                                            window.open('', '_self', '');
                                                                            window.close();
                                                                    }, 0);
                                      }
    */
                    </script>
        </body> 
    </html>

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonjour,
    il y a le concept de Same-Origin Policy qui peut sans doute te poser problème dans le cas présent.
    Tu n’as le droit d’interagir avec une page fille (en l’occurence, ouverte via open()) que si elle a la même origine que la page mère. La page "about:blank" est à part et n’a d’origine commune avec aucune page en http, https, etc.

    D’autre part, on ne peut utiliser close() que sur une fenêtre ouverte via open(). Le but est de ne pas surprendre l’utilisateur ou l’utilisatrice : on ne peut fermer programmatiquement une fenêtre que si elle a été ouverte programmatiquement.

    Les catch vides ne vont pas t’aider, utilise au moins la console (touche F12 pour l’ouvrir), par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch (e) {
      console.error(e);
    }
    Enfin, pour communiquer des données entre différentes pages d’un même domaine, tu peux utiliser l’API localStorage (à partir d’IE 8).
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Bonjour et merci de votre réponse.

    Le problème venait d'une mauvaise configuration de l'UAC de windows, qui n'isolait pas le processus Internet Explorer (entre autre).

    Voici la solution en PJ avec les bon paramètres
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. "partager" une variable entre processus
    Par vever001 dans le forum Débuter
    Réponses: 1
    Dernier message: 03/06/2010, 08h36
  2. Partage de variable entre deux forms
    Par PtitGénie dans le forum C++
    Réponses: 2
    Dernier message: 16/12/2007, 18h56
  3. Partager des variables entre plusieurs actions ds un controlleur
    Par gvdmoort dans le forum Ruby on Rails
    Réponses: 6
    Dernier message: 11/10/2007, 09h38
  4. Partage de variables entre fichier .jsp
    Par stephou85 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/05/2007, 09h59
  5. Partage de variables entre plusieurs pages
    Par bud_gw dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/12/2005, 15h42

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