Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/07/2011, 21h57   #1
Membre régulier
 
Avatar de ToniConti
 
Inscription : novembre 2009
Messages : 231
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 231
Points : 90
Points : 90
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 :
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.
ToniConti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 22h28   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 774
Points : 4 774
Bonsoir
un seul mot target -> cible
si tu écris
Code :
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 :
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
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 10h20   #3
Membre régulier
 
Avatar de ToniConti
 
Inscription : novembre 2009
Messages : 231
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 231
Points : 90
Points : 90
Monstrueusement efficace noSmoking

J'y étais finalement arrivé en rajoutant une condition supplémentaire (en gras ci-dessous)
Code :
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 :
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.
ToniConti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h52.


 
 
 
 
Partenaires

Hébergement Web