steph13 Posté 2 Mars 2006 Posté 2 Mars 2006 (modifié) 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="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é 2 Mars 2006 par steph13
Théo B. Posté 2 Mars 2006 Posté 2 Mars 2006 (modifié) <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é 2 Mars 2006 par Théo B.
steph13 Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 Merci Théo, nos messages se sont croisées Si quelqu'un a testé et validé quelque chose de similaire sous FF, je suis preneur. Merci.
captain_torche Posté 2 Mars 2006 Posté 2 Mars 2006 (modifié) Après quelques tests et recherches, il s'avère que malheureusement, il est impossible sous Firefox de fermer une fenêtre ouverte par un utilisateur. Modifié 2 Mars 2006 par captain_torche
steph13 Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 Bien vu captain....Merci à toi. Bon. Bhé je vais voir autrement alors...
Dudu Posté 2 Mars 2006 Posté 2 Mars 2006 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 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 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 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 ? Ce serait moins bancal. Parce que là on dirait que tu as décidé de vivre dangereusement
Théo B. Posté 2 Mars 2006 Posté 2 Mars 2006 Si la fenetre est une petite fenetre sans barre d'adresse, d'etat, ... c'est trop contraignant
captain_torche Posté 2 Mars 2006 Posté 2 Mars 2006 Oui, effectivement, si c'est pour ouvrir un site en plein écran, sans barre d'adresse ni de nav qui prennent trop de place, je crains bien que ce ne soit anti-accessible.
steph13 Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 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
Dudu Posté 3 Mars 2006 Posté 3 Mars 2006 Joli cas d'école 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
steph13 Posté 3 Mars 2006 Auteur Posté 3 Mars 2006 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. Dis moi toutours ce que tu en penses.
captain_torche Posté 3 Mars 2006 Posté 3 Mars 2006 Sinon, est-ce que le self.close(), ne permettrait pas de ne fermer que le document courant (plutôt que risquer de fermer la fenêtre entière) ?
steph13 Posté 3 Mars 2006 Auteur Posté 3 Mars 2006 Quel est la difference entre le document courant et la fenêtre? Je ne suis pas certains de bien te suivre captain...
Dudu Posté 3 Mars 2006 Posté 3 Mars 2006 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 (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)
steph13 Posté 3 Mars 2006 Auteur Posté 3 Mars 2006 B'jour Dudu... Bon, bha si la solution adopté te semble bonne....ca devrait aller alors Par contre, heu, j'ai besoin de me documenter encore la : Arbre Dom ?? Ca fait pas des fruits comestible un truc pareil non ?? 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 Y'a t-il un décodeur dans la salle ??
Dudu Posté 3 Mars 2006 Posté 3 Mars 2006 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#documentHTMLHEAD META LINK TITLETitre de la page [*]LINK [*]SCRIPT [*]BODY DIVH1Titre 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 )
steph13 Posté 3 Mars 2006 Auteur Posté 3 Mars 2006 (modifié) Ah yes... Dudu, c'est de la doc montée sur pattes !! Merci beaucoup m'sieur. Je vais potasser cela. Modifié 3 Mars 2006 par steph13
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant