Aller au contenu

Ouverture et fermeture d'une fenetre


steph13

Sujets conseillés

B'jour le Hub,

Je cherche une solution, (javascript ??) pour ouvrir une nouvelle fenêtre, tout en fermant la fenêtre courante.

Cas pratique:

J'ai une fenêtre qui s'ouvre depuis une page X.

Sur cette fenêtre, je renvoi des infos diverses.

Sur cette même fenêtre, il y a un lien "visiter le site".

Hors, je voudrais, lors du clic sur ce lien, fermer la fenêtre en cours et en ouvrir une nouvelle avec le site X ou Y.

Comment puis je faire cela ?

Merci d'avance.

Steph'

Edit:

J'ai trouvé cette solution:

<a href=&quot;http://www.site.com" target="_blank" onclick="java script:window.close()">Visiter son site</a>

Cela fonctionne très bien avec IE, mais c'est la cata avec Firefox et la navigation par onglet...

Modifié par steph13
Lien vers le commentaire
Partager sur d’autres sites

<a href="http://www.tonsite.com" target="_blank" onclick="java script:window.close()">Visiter le site</a>

//EDIT : en effet, ça ne marche pas sous FF.

Modifié par Théo B.
Lien vers le commentaire
Partager sur d’autres sites

Merci Théo, nos messages se sont croisées :P

Si quelqu'un a testé et validé quelque chose de similaire sous FF, je suis preneur.

Merci.

Lien vers le commentaire
Partager sur d’autres sites

Salut

L'autre problème avec les navigateurs Gecko (donc Firefox, l'antique Mozilla, Camino, Netscape etc...) est qu'il est possible de désactiver le target=_blank de sorte à ce que par défaut TOUS les liens s'ouvrent toujours dans la même fenêtre.

Çà se règle dans le about:config

Donc, avec les visiteurs qui ont réglé ce paramètre, tu risques d'ouvrir le 2ème site dans la même fenêtre, puis... de fermer la fenêtre :D

Donc pour tous ces navigateurs, tu peux laisser tomber

L'autre problème est qu'il n'y a pas que Firefox et WinIE: Safari aussi refuse certaines fermetures de fenêtres (sur quels critères je ne sais plus, mais certainement très proches de ceux de Firefox)

Opera même chose. Quant aux autres navigateurs exploitant d'autres moteurs de rendu, c'est encore plus aléatoire.

Donc là aussi tu peux laisser tomber

Et pour en rajouter une dernière couche, le window.close agit différement selon les navigateurs: parfois il ferme juste l'onglet, parfois il ferme toute la fenêtre quelque soit le nombre d'onglets (et çà peut faire piquer des crises de nerfs à tes visiteurs). Et encore, lorsque le navigateur ferme toute la fenêtre, parfois il avertit ("attention vous allez fermer une fenêtre qui contient [x] onglets, êtes-vous sûr?"), parfois il n'avertit pas. Là encore çà dépend du navigateur et de sa version.

Bon, bien sûr dans le cas d'IE le problème des onglets ne se pose pas :lol:

En résumé, un window.close est à manipuler avec moultes précautions, d'autant plus que dans certains cas ce genre de techniques puisse apparaître comme intrusif ;)

À part dans les pop-up (et encore faut-il être sûr que le visiteur n'a pas décidé d'ouvrir le pop-up en pleine page dans un nouvel onglet, çà arrive) je ne prendrais pas le risque de mettre un window.close :unsure:

Question idiote: si le but est de remplacer l'affichage d'un site A par un site B, pourquoi ne pas laisser le lien s'ouvrir dans la même fenêtre ? :huh:

Ce serait moins bancal. Parce que là on dirait que tu as décidé de vivre dangereusement tongue.gif

Lien vers le commentaire
Partager sur d’autres sites

Salut Dudu :)

En fait, l'idée:

J'ai une galerie de photos des membres.

Tu cliques sur photo pour la voir en plus grand.

Je t'ouvre donc une popup.

De la, tu as un lien quite renvoi vers le site du membre...

PS: Un peu de danger parfois, c'est welcome :P;)

Lien vers le commentaire
Partager sur d’autres sites

Joli cas d'école :D

C'est vrai que si çà avait pu marcher partout sans poser de problèmes, la situation prêtait bien à ce genre de choses..

Cela dit, tu te risques:

- à ce que ta page de photo grand format soit ouverte pleine-page dans un nouvel onglet (on prend de plein fouet l'abus de pop-up publicitaires)

- à des incompatibilités sur certains navigateurs

Je ne vois que 3 solutions:

  • Garder ce script tel quel. Dans IE çà passera parfaitement puisqu'il n'y a pas d'onglets et que ce JS est accepté. Pour les autres, advienne que pourra: au pire ils auront un pop-up à fermer manuellement.
  • Ouvrir le site du membre toujours depuis la pop-up mais dans la fenêtre principale, donc à place de la galerie. J'imagine que tu as écarté cette hypothèse pour ne pas "perdre" des visiteurs ;) (faut pas s'en faire, ils reviennent)
  • Faire une "fausse pop-up" sur la page de la galerie. C'est-à-dire jouer avec du JS sur des sortes de "calques" appelés par un clic. Et afficher le lien dans cette fausse pop-up en target="_blank". Çà t'oblige à revoir ton code, c'est l'inconvénient.

Pour des exemples de fausse pop-up, tu as çà par exemple, même si çà peut ne pas correspondre exactement: SlayerOffice SlideShow

Sinon tu devrais pouvoir ton bonheur avec des librairies JS telles que Prototype, script.aculo.us ou encore Behaviour

Lien vers le commentaire
Partager sur d’autres sites

B'jour Dudu,

En fait, j'ai opté pour quelques chose dans ce genre : Voir ici

J'ai viré le JS, sauf pour le window.close(), qui, sous FF, passe très bien. :P

Dis moi toutours ce que tu en penses.

Lien vers le commentaire
Partager sur d’autres sites

Quel est la difference entre le document courant et la fenêtre?

Je ne suis pas certains de bien te suivre captain... :)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Apparemment la solution retenue semble parfaite. Un seul détail: il semble que Firefox ne prenne pas en compte window.close() uniquement lorsque la page est dans un onglet: çà fait donc un lien inactif :unsure: (bon ce n'est pas excessivement gênant)

Aucun problème sous Safari..

PS: pour ta dernière question: c'est, en substance, la différence entre l'onglet et la fenêtre (grosso modo). Il me semble que l'arbre DOM considère l'élement "window" comme étant la fenêtre de vue, et non comme étant la fenêtre du navigateur (qui peut, elle, contenir plusieurs pages grâce aux onglets)

Lien vers le commentaire
Partager sur d’autres sites

B'jour Dudu...

Bon, bha si la solution adopté te semble bonne....ca devrait aller alors :P

Par contre, heu, j'ai besoin de me documenter encore la : Arbre Dom ??

Ca fait pas des fruits comestible un truc pareil non ?? :lol:

Fenêtre de vue et fenêtre de navigateur...oui, oui, oui...

En clair, la chose que j'ai bien compris la, c'est que je n'ai rien compris, et que j'ai encore pas mal de pain sur la planche :P

Y'a t-il un décodeur dans la salle ??

Lien vers le commentaire
Partager sur d’autres sites

L'arbre DOM ce n'est pas le pommier du jardin d'Eden, malheureusement ;)

C'est la représentation de ta page HTML en ne gardant que les balises (qui sont alors appelées des "noeuds").

Admettons une page très simpliste comme celle-ci:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.php" />
<title>Titre de la page</title>
<link rel="stylesheet" type="text/css" href="styles.css" media="screen,projection, print" />
<script type="text/javascript" src="functions.js"></script>
</head>
<body>
<div id="conteneur">
<h1>Titre H1</h1>
<h2>Sous-titre H2</h2>
<p>Paragraphe</p>
</div>
</body>
</html>

L'arbre DOM de cette page est celui-ci:

  • #window
    • #document
      • HTML
        • HEAD
          • META
          • LINK
          • TITLE
            • Titre de la page

            [*]LINK

            [*]SCRIPT

          [*]BODY

          • DIV
            • H1
              • Titre H1

              [*]H2

              • Sous-titre H2

              [*]P

              • Paragraphe

Tout çà pour dire qu'il peut y avoir une confusion entre l'objet window de l'arbre DOM, et la fenêtre du navigateur ;)

Quelques petits liens pour approfondir:

Référence du DOM Gecko sur le site de Mozilla. Le lien à avoir sous le coude quand on aborde le DOM.

Document Object Model sur Wikipedia. Je viens de trouver ce lien par un moteur de recherche car la documentation Mozilla reste très vague sur cette notion d'arbre. Très instructif.

Se servir du DOM pour écrire des applications concrètes en Javascript toujours sur le site Mozilla, mais cette partie là est uniquement en anglais.

D'ailleurs il est préférable de consulter la référence DOM de Mozilla dans la langue de Shakespeare, car de (trop ?) nombreux articles n'ont pas été traduits.

PS: Dans le même genre, le validateur du w3c te permet de choisir, lors de la validation d'une page, de représenter l'arbre de la page. Pour cela, il faut se rendre sur la page de validation approfondie et cocher la case "Show Parse Tree".

(à ce propos, mets tes "onmouseover" tout en minuscule en XHTML pour ne pas que le validateur hurle au scandale ;))

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Ah yes...

Dudu, c'est de la doc montée sur pattes !! :D

Merci beaucoup m'sieur.

Je vais potasser cela.

Modifié par steph13
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...