Question

J'essaie de "forcer" Safari ou IE7 pour ouvrir une nouvelle page en utilisant un nouvel onglet .

Par programme, je veux dire quelque chose comme:

window.open('page.html','newtaborsomething');
Était-ce utile?

La solution

Vous ne pouvez pas contrôler cela directement, car c'est une option contrôlée par les utilisateurs d'Internet Explorer.

L'ouverture de pages à l'aide de Window.open avec un nom de fenêtre différent s'ouvrira dans une nouvelle fenêtre du navigateur, telle qu'une fenêtre contextuelle, OU s'ouvrira dans un nouvel onglet, si l'utilisateur a configuré le navigateur pour le faire.

Autres conseils

Vous pouvez, dans Firefox cela fonctionne, ajouter l'attribut target = " _newtab " à l'ancre pour forcer l'ouverture d'un nouvel onglet.

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

En javascript, vous pouvez utiliser

window.open('page.html','_newtab');

Cela dit, je suis partiellement d'accord avec Sam. Vous ne devez pas forcer les utilisateurs à ouvrir de nouvelles pages ou de nouveaux onglets sans leur indiquer un indice sur ce qui va se passer avant que ils cliquent sur le lien.

Faites-moi savoir s'il fonctionne également sur un autre navigateur (je n'ai pas la possibilité de l'essayer sur un autre navigateur que Firefox pour le moment).

Edit: ajout de la référence pour ie7 Peut-être que ce lien peut être utile
http: // social. msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/

Ceux d'entre vous qui tentent d'utiliser les éléments suivants:

window.open('page.html', '_newtab');

devrait vraiment regarder la méthode window.open.

Tout ce que vous faites est de dire au navigateur d’ouvrir une nouvelle fenêtre NAMED " _newtab " et y charger page.html. Chaque nouvelle page que vous chargez sera chargée dans cette fenêtre. Toutefois, si un navigateur a configuré son navigateur pour ouvrir de nouvelles pages dans de nouveaux onglets au lieu de nouvelles fenêtres, un onglet sera ouvert. Quoi qu’il en soit, le même nom est utilisé pour la fenêtre ou l’onglet.

Si vous voulez que différentes pages s'ouvrent dans des fenêtres ou des onglets différents, vous devrez changer le NOM de la nouvelle fenêtre / onglet en un nom différent, tel que:

window.open('page2.html', '_newtab2');

Bien sûr, le nom de la nouvelle fenêtre / onglet pourrait être n’importe quel nom tel que page1, page2, page3, etc. au lieu de _newtab2.

Il appartient à l'utilisateur de choisir s'il souhaite utiliser de nouveaux onglets ou de nouvelles fenêtres. Ce n'est pas au développeur de modifier ce comportement. Je ne pense pas que vous puissiez le faire.

Ma bête noire - je déteste ça lorsque les sites me forcent à ouvrir dans une nouvelle fenêtre / un nouvel onglet - je suis tout à fait capable de prendre cette décision moi-même. Surtout quand ils le font en javascript - c'est vraiment inutile.

Avez-vous déjà essayé comme

var open_link = window.open('','_blank');
open_link.location="somepage.html";

j'ai découvert dans Chrome,

window.open('page.html','_newtab')

ne fonctionnera qu'une fois.

Vous pouvez utiliser:

window.open(ct.getNewHref(),'_newtab' + Math.floor(Math.random()*999999));

Pour ouvrir plusieurs nouveaux onglets.

Le code que j'utilise avec jQuery:

$("a.btn_external").click(function() {
    url_to_open = $(this).attr("href");
    window.open(url_to_open, '_blank');
    return false;
});

Ceci est utile pour distinguer les événements de clic d’un parent chez un enfant. En utilisant cette méthode, vous ne déclenchez pas l'événement click du parent.

Si vous le souhaitez, vous pouvez utiliser cette méthode, qui est un peu compliquée, mais qui offre les fonctionnalités souhaitées:

jQuery('<a/>', {
    id: 'foo',
    href: 'http://google.com',
    title: 'Become a Googler',
    rel: 'external',
    text: 'Go to Google!',
    target:'_blank',
    style:'display:none;'
}).appendTo('#mySelector');

$('#foo').click()

Cela fonctionne à 100%

window.open ('http://www.google.com/','_newtab' + Date.now ());

Cela peut fonctionner si vous pouvez appeler un fichier batch (j'utilise php avec XP SP2 et IE8 ... vous pouvez essayer IE7, ne sais pas). Utilisez les éléments suivants (ou similaires) dans votre fichier .bat pour ouvrir Windows: Démarrez " " C: \ Progra ~ 1 \ Intern ~ 1 \ iexplore " http: //www.site.com" ;. Il n'y a pas d'espace entre les guillemets et C: \ Progr ... etc. À un moment donné, cela peut commencer à ouvrir de nouvelles fenêtres (c'est-à-dire target = "_blank") plutôt que de nouveaux onglets, mais fonctionne jusqu'à un point ; pas testé de manière approfondie. Pour utiliser ceci dans un fichier de commandes normal (CMD.exe), vous devez probablement avoir une fenêtre déjà ouverte. Juste partager quelque chose que je suis tombé sur. MODIFIÉ pour clarification.

<a href="http://www.google.com/" target="_self">New Tab Example</a>

Fonctionne dans IE7.

Cordialement,

Glenn

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top