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 :

Comment ouvrir un second onglet maximum ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut Comment ouvrir un second onglet maximum ?
    Bonsoir à tous,

    Comment ouvrir un second onglet maximum ?

    En gros ma page principale possède une fonction qui ouvre un nouvel onglet.
    Dans cette fonction je cherche à voir si l'onglet en question est déjà ouvert dans le but de le réutiliser plutot que d'en ouvrir un nouveau.

    C'est cela que je veux dire par "Comment ouvrir un second onglet maximum"

    Voici le contenu de ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function showParamsWindow(code)
    {
      // Si cette variable est connue c'est que l'onglet est déjà ouvert, alors je le réutilise
      if (typeof(paramsWindow) != "undefined")
      {
        paramsWindow.location = '/csp/dupuis/gestion/productionParams.csp?CODE=' + code;
        paramsWindow.focus();
      }
      // Si pas, j'ouvre le nouvel onglet et je stoke sa référence dans la variable
      else
      {
        paramsWindow = window.open('/csp/dupuis/gestion/productionParams.csp?CODE=' + code);
      }
    }
    Là où le bas blesse, c'est dans le cas où l'onglet a déjà été ouvert mais que l'utilisateur l'a fermé :-/ dans ce cas précis, le script plante dès qu'il essaye d'accéder à la propriété "location" de la variable "paramsWindow"

    Tout ceci est parfaitement normal mais je n'ai pas la moindre idée de comment solutionner ce problème.
    J'espère que quelqu'un de plus expérimenté que moi pourra me venir en aide,
    Merci d'avance en tout cas,

    Bonne soirée,

    Anthony.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonsoir
    un seul mot target -> cible
    si tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <a href="page1.html" target="onglet">page 1</a><br>
    <a href="page2.html" target="onglet">page 2</a><br>
    <a href="page3.html" target="onglet">page 3</a><br>
    <a href="page4.html" target="onglet">page 4</a>
    TOUTES les pages s'ouvriront dans la même fenêtre qui aura pour nom onglet

    de même avec window.open le 2éme paramètre est le nom de la fenêtre, avec une fonction du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function ouvreUL( url){
      window.open( url, "onglet");
    }
    TOUS les appels à cette fonction feront ouvrir les pages dans la même fenêtre, si elle existe, encore ouverte donc, le contenu sera remplacé, si elle a été fermée une nouvelle fenêtre onglet sera ouverte.

    A lire https://developer.mozilla.org/fr/DOM/window.open

  3. #3
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    Monstrueusement efficace noSmoking

    J'y étais finalement arrivé en rajoutant une condition supplémentaire (en gras ci-dessous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (typeof(paramsWindow) != "undefined" && paramsWindow.closed==false)
    {
        paramsWindow.location = '/csp/dupuis/gestion/productionParams.csp?CODE=' + code;
        paramsWindow.focus();
    }
    else
    {
        paramsWindow = window.open('/csp/dupuis/gestion/productionParams.csp?CODE=' + code, "windowParams");
    }
    Mais je préfère nettement ta solution je l'adopte tout de suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function openWindowParams(code)
    {
        window.open('/csp/dupuis/gestion/productionParams.csp?CODE=' + code, "windowParams");
    }
    Un grand merci pour ton aide, passe une bonne journée,

    Anthony.

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

Discussions similaires

  1. Comment ouvrir un fichier excel dans le même onglet
    Par jlppap dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/09/2008, 08h50
  2. Comment ouvrir un formulaire à onglet ?
    Par titecaro dans le forum Access
    Réponses: 2
    Dernier message: 07/08/2006, 10h44
  3. Réponses: 27
    Dernier message: 03/02/2003, 12h27
  4. TTreeView -> Comment ouvrir une unité ?
    Par DaLove dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/12/2002, 11h30
  5. Réponses: 1
    Dernier message: 31/10/2002, 11h55

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