J'essaye de "forcer" Safari ou IE7 à ouvrir une nouvelle page en utilisant un nouvel onglet .
Par programme, je veux dire quelque chose comme:
window.open('page.html','newtaborsomething');
J'essaye de "forcer" Safari ou IE7 à ouvrir une nouvelle page en utilisant un nouvel onglet .
Par programme, je veux dire quelque chose comme:
window.open('page.html','newtaborsomething');
Réponses:
Vous ne pouvez pas contrôler cela directement, car c'est une option contrôlée par les utilisateurs d'Internet Explorer.
Ouvrir des pages à l'aide de Window.open avec un nom de fenêtre différent s'ouvrira dans une nouvelle fenêtre de navigateur comme une fenêtre contextuelle, OU s'ouvrira dans un nouvel onglet, si l'utilisateur a configuré le navigateur pour le faire.
Vous pouvez, dans Firefox ça marche, 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');
Dit cela, je suis partiellement d'accord avec Sam. Vous ne devez pas forcer l'utilisateur à ouvrir de nouvelles pages ou un nouvel onglet sans lui montrer un indice sur ce qui va se passer avant de cliquer sur le lien.
Faites-moi savoir si cela fonctionne également sur un autre navigateur (je n'ai pas la chance de l'essayer sur un autre navigateur que Firefox pour le moment).
Edit: référence ajoutée 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 essaient d'utiliser ce qui suit:
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 NOMMÉE "_newtab" et d'y charger page.html. Chaque nouvelle page que vous chargez se chargera dans cette fenêtre. Cependant, si un utilisateur a configuré son navigateur pour ouvrir de nouvelles pages dans de nouveaux onglets au lieu de nouvelles fenêtres, il ouvrira un onglet. Quoi qu'il en soit, il utilise le même nom pour la fenêtre ou l'onglet.
Si vous voulez que différentes pages s'ouvrent dans différentes fenêtres ou onglets, vous devrez changer le NOM de la nouvelle fenêtre / onglet en quelque chose de différent tel que:
window.open('page2.html', '_newtab2');
Bien sûr, le nom de la nouvelle fenêtre / onglet peut être n'importe quel nom comme page1, page2, page3, etc. au lieu de _newtab2.
C'est à l'utilisateur 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 quand les sites me forcent à ouvrir dans une nouvelle fenêtre / onglet - je suis tout à fait capable de prendre cette décision par moi-même. Surtout quand ils le font en javascript - ce n'est vraiment pas utile.
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 seule 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 faire la distinction entre les événements de clic d'un parent dans un enfant. En utilisant cette méthode, vous ne déclenchez pas l'événement de clic du parent.
<a href="page.html" target="_blank">foo</a>
Cela fonctionne à 100%
window.open('http://www.google.com/','_newtab' + Date.now());
Si vous le vouliez, vous pourriez utiliser cette méthode, qui est un peu piratée, mais qui offrirait la fonctionnalité souhaitée:
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 peut fonctionner si vous pouvez appeler un fichier batch (j'utilise php avec XP sp2 et IE8 ... vous pouvez essayer IE7, je ne sais pas). Utilisez ce qui suit (ou similaire) 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 certain moment, cela peut commencer à ouvrir de nouvelles fenêtres (c'est-à-dire, target = "_ blank") plutôt que de nouveaux onglets, mais cela fonctionne jusqu'à un certain point; pas largement testé. Pour l'utiliser dans un fichier de commandes standard (CMD.exe), vous devez probablement avoir une fenêtre déjà ouverte. Je partage simplement quelque chose sur lequel je suis tombé par hasard. MODIFIÉ pour clarification.
<a href="http://www.google.com/" target="_self">New Tab Example</a>
Fonctionne dans IE7.
Cordialement,
Glenn