74 votes

Comment puis-je ouvrir un lien dans un nouvel onglet (et pas de nouvelle fenêtre)?

J'ai un bouton "Ouvrir" qui "calcule" un lien qui devrait être ouvert dans un nouvel onglet. J'essaie d'utiliser:

window.open(url, '_blank');

Mais que s'ouvre une nouvelle fenêtre.

J'ai aussi essayé la méthode suivante:

<form id="oform" name="oform" action="" method="post" target="_blank">
</form>

...

document.getElementById("oform").action = url;
document.getElementById("oform").submit();

Encore, une nouvelle fenêtre s'ouvre, au lieu d'un nouvel onglet.

Lors de l'utilisation de simple <a href...> avec target='blank', le lien est ouvert dans un nouvel onglet.

Est-il une solution?

69voto

Anirudh Ramanathan Points 25113

CSS3 prend en charge la fonction "ouvrir dans un nouvel onglet", par la propriété de la cible de nouveaux

target-new: window | tab | none;

Pour une méthode de forcer l'ouverture dans un nouvel onglet qui est bien pris en charge, essayez les solutions suivantes:

<a href="some url" target="_newtab">content of the anchor</a>

Sinon, utilisez cette méthode pour redimensionner la fenêtre immédiatement, afin de s'assurer que les bloqueurs de ne pas tuer votre popup

9voto

Kon Points 16125

Autre que le CSS3 cible-nouvelle option @anirudh4444 mentionné, vous ne pouvez pas et surtout ne devriez probablement pas. Vous essayez de contrôler l'expérience de l'utilisateur, lors de ce qui devrait probablement être laissé à l'utilisateur.

7voto

Ben Points 32

Vous pouvez utiliser l'un des suivants, je les ai testés tous les 6 différents navigateurs. (Google Chrome, Mozilla Firefox, Microsoft Internet Explorer, Opera, K-meleon,* et Seamonkey.

  1. <a href="blaah" target="_blank">Blaah</a>
  2. <a href="blaah" target="_tab">Blaah</a>
  3. <a href="blaah" target="_new">Blaah</a>

Ils travaillent tous exactement la même, et le choix est entièrement à la préférence.

*K-meleon, pour une raison qui vient d'ouvrir la page j'ai été lorsque j'ai cliqué sur le lien.

3voto

Mukesh Agarwal Points 73

J'ai été en mesure de résoudre ce problème à l'aide d'une "forme" de l'élément.

function openNewTab(link) {
     var frm = $('<form   method="get" action="' + link + '" target="_blank"></form>')
     $("body").append(frm);
     frm.submit().remove();
}

Pour terminer la mise en œuvre et de détails, visitez mon post http://mukesh.in/force-open-new-tab-in-browsers-instead-of-windows/

Ou voir ce JSFiddle

0voto

psema4 Points 1194

Les travaux suivants dans google Chrome:

<script>
    function buildAndGo() {
        var aEl = document.getElementById('missingLink');
        aEl.href = "#" + resultOfSomeCalculation();

        var e = document.createEvent('MouseEvents');
        e.initEvent( 'click', true, true );

        aEl.dispatchEvent(e);
    }
</script>
...
<button onclick="buildAndGo()">Do it</button>
<a href="#" id="missingLink" target="_blank" style="visibility: hidden;"></a>

Travail à partir des sources suivantes pour essayer d'obtenir une version de IE travail: Le Sélénium BrowserBot, YUI Action de l'Utilisateur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X