web-dev-qa-db-fra.com

Comment ouvrir un nouvel onglet en JavaScript sans basculer vers le nouvel onglet?

Comment puis-je ouvrir un nouvel onglet à l'aide de javascript sans basculer vers le nouvel onglet?
Par exemple, lorsqu'un utilisateur clique sur un lien, un nouvel onglet doit être ouvert, mais l'utilisateur doit rester sur l'onglet en cours.

25
Miki Pavlov

Le navigateur Web se concentre automatiquement sur le nouvel onglet, mais vous pouvez rappeler le focus:

function openWindow( url )
{
  window.open(url, '_blank');
  window.focus();
}

<a href="http://www.example.com/" onclick="javascript:openWindow(this.href);return false;">Click Me</a>
39
Mike

Malheureusement, vous ne pouvez pas le faire actuellement, mais vous pouvez vous en approcher. Vous pouvez ouvrir une nouvelle fenêtre , et si vous le faites sans spécifier les dimensions ou les caractéristiques de la fenêtre, la plupart des navigateurs modernes ouvriront un nouvel onglet (en fonction des préférences de l'utilisateur, l’utilisateur préfère quand même, non?). Donc, juste window.open(url) ou window.open(url, name) si vous allez utiliser le nom pour quelque chose. Assurez-vous de le faire en réponse directe à un événement initié par l'utilisateur, sinon le bloqueur de fenêtres contextuelles du navigateur bloquera probablement ... la fenêtre contextuelle. :-)

Exemple live

En ce qui concerne rester concentré sur votre fenêtre ... bonne chance avec ça. Vous pouvez appeler window.focus() après window.open(...), mais selon mon expérience, cela ne fonctionne généralement pas.

Si vous faites ce que l’utilisateur interagit avec un lien authentique avec une URL, l’utilisateur peut décider de l’ouvrir dans un nouvel onglet, une nouvelle fenêtre, etc., et de lui donner le focus ( si elles sont assez sophistiquées pour connaître Shift + Click et Ctrl + Shift + Click ou le menu contextuel).

12
T.J. Crowder

Malheureusement, vous ne pouvez pas faire cela dans TOUS les navigateurs, mais vous pouvez le faire dans Chrome si vous implémentez l'extension de navigateur .

http://code.google.com/chrome/extensions/tabs.html

chrome.tabs.create(object createProperties, function callback)
    Creates a new tab. Note: This function can be used without requesting the 'tabs' permission in the manifest.
Parameters
    **createProperties** ( object )
    **windowId** ( optional integer )
       The window to create the new tab in. Defaults to the current window.
    **index** ( optional integer )
       The position the tab should take in the window. The provided value will be clamped to between zero and the number of tabs in the window.
    **url** ( optional string )
       The URL to navigate the tab to initially. Fully-qualified URLs must include a scheme (i.e.    'http://www.google.com', not 'www.google.com'). Relative URLs will be relative to the current page within the extension. Defaults to the New Tab Page.
    **selected** ( optional boolean )
       Whether the tab should become the selected tab in the window. Defaults to true
    pinned ( optional boolean )
       Whether the tab should be pinned. Defaults to false
    **callback** ( optional function )
3
Pavel Podlipensky

Il s'agit de paramètres spécifiques à l'utilisateur. Vous ne pouvez pas modifier ce comportement à partir de JS.

2
0xd

Pour moi, en utilisant

window.open("https://stackoverflow.com");

a fonctionné parfaitement. Cela dépend du navigateur que vous utilisez, du système d'exploitation utilisé et de vos préférences personnelles.

Chrome, Internet Explorer et Firefox ont tous ouvert un nouvel onglet. Désolé si cela ne fonctionne pas pour vous.

(Je viens de me rendre compte que c'est un vieux fil)

2
EternalMonologue
(function(a) {
    document.body.appendChild(a);
    a.setAttribute('href', location.href);
    a.dispatchEvent((function(e) {
        e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, 
                         true, false, false, false, 0, null);
        return e
    }(document.createEvent('MouseEvents'))))
}(document.createElement('a')))
1
spirinvladimir

Le message est ancien mais sans réponse correcte à 100%.

SOLUTION POUR TOUS LES NAVIGATEURS:

vous pouvez ouvrir un nouvel onglet vers même domaine URL via:

window.open("newurl.php", "_blank");

et pour les nouveaux onglets interdomaines, vous devez créer un script local simple, comme ceci:

dans le nouveau fichier "redirect.php" vous transmettez un paramètre (URL du nouvel onglet cible) comme ceci

<?php
   $newURL=$_GET['u'];
   header('Location: '.$newURL);
؟>

et vous pouvez créer un nouvel onglet avec n'importe quelle URL cible avec:

window.open("redirect.php?u=http://www.google.com", "_blank");

:)

sa ma solution dans mon site web. et travailler avec 

0
IrajTaghlidi