Dans Chrome, cela s'ouvre dans un nouvel onglet:
<button onclick="window.open('newpage.html', '_blank')" />
cela s'ouvre dans une nouvelle fenêtre (mais j'aimerais que cela s'ouvre également dans un nouvel onglet:
<script language="javascript">
window.open('newpage.html', '_blank');
</script>
Est-ce faisable?
javascript
window.open
Andrew
la source
la source
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.
ÉDITER:
Une explication plus détaillée:
1. Dans les navigateurs modernes, window.open s'ouvrira dans un nouvel onglet plutôt que dans une fenêtre contextuelle.
2. Vous pouvez forcer un navigateur à utiliser une nouvelle fenêtre ('popup') en spécifiant des options dans le 3ème paramètre
3. Si l'appel window.open ne faisait pas partie d'un événement initié par l'utilisateur, il s'ouvrira dans une nouvelle fenêtre.
4. Un «événement initié par l'utilisateur» n'a pas le même appel de fonction - mais il doit provenir de la fonction appelée par un clic utilisateur
5. Si un événement initié par l'utilisateur délègue ou diffère un appel de fonction (dans un écouteur d'événement ou un délégué non lié à l'événement de clic, ou en utilisant setTimeout par exemple), il perd son statut «initié par l'utilisateur».
6. Certains bloqueurs de popup autoriseront les fenêtres ouvertes à partir d'événements déclenchés par l'utilisateur, mais pas ceux ouverts autrement.
7. Si une fenêtre contextuelle est bloquée, celles normalement autorisées par un bloqueur (via des événements déclenchés par l'utilisateur) seront parfois également bloquées. Quelques exemples…
Forcer une fenêtre à s'ouvrir dans une nouvelle instance de navigateur, au lieu d'un nouvel onglet:
Ce qui suit serait considéré comme un événement déclenché par l'utilisateur, même s'il appelle une autre fonction:
Ce qui suit ne serait pas considéré comme un événement déclenché par l'utilisateur, car setTimeout le reporte:
la source
Il est parfois utile de forcer l'utilisation d'un onglet, si l'utilisateur aime ça. Comme Prakash l'a indiqué ci-dessus, cela est parfois dicté par l'utilisation d'un événement non initié par l'utilisateur, mais il existe des moyens de contourner cela.
Par exemple:
ouvrira toujours "newurl" dans une nouvelle fenêtre de navigateur car la fonction "toujours" n'est pas considérée comme lancée par l'utilisateur. Cependant, si nous faisons cela:
nous ouvrons la nouvelle fenêtre de navigateur ou créons le nouvel onglet, tel que déterminé par la préférence de l'utilisateur dans le bouton cliquez sur quel IS initié par l'utilisateur. Ensuite, nous définissons simplement l'emplacement sur l'URL souhaitée après le retour de la publication AJAX. Voila, on force l'utilisation d'un onglet si l'utilisateur aime ça.
la source
si tu utilises
window.open(url, '_blank')
, il sera bloqué (bloqueur de popup) sur Chrome, Firefox, etc.essaye ça,
travail js violon pour cela http://jsfiddle.net/safeeronline/70kdacL4/2/
travail js fiddle pour la fenêtre ajax ouverte http://jsfiddle.net/safeeronline/70kdacL4/1/
la source
Pour le moment (Chrome 39) j'utilise ce code pour ouvrir un nouvel onglet:
Bien sûr, cela peut changer dans les futures versions de Chrome.
C'est une mauvaise idée de l'utiliser si vous ne pouvez pas contrôler le navigateur que vos utilisateurs utilisent. Cela peut ne pas fonctionner dans les versions futures ou avec des paramètres différents.
la source
VM646 js:12 Blocked opening 'http://www.stackoverflow.com/' in a new window because the request was made in a sandboxed frame whose 'allow-popups' permission is not set.
Cela ouvrira le lien dans un nouvel onglet dans Chrome et Firefox, et éventuellement dans d'autres navigateurs que je n'ai pas testés:
Il ouvre essentiellement un nouvel onglet vide, puis définit l'emplacement de cet onglet vide. Attention, il s'agit d'une sorte de hack, car le comportement des onglets / fenêtres du navigateur est en réalité le domaine, la responsabilité et le choix du navigateur et de l'utilisateur.
La deuxième ligne peut être appelée dans un rappel (après avoir effectué une requête AJAX par exemple), mais le navigateur ne la reconnaîtra pas comme un événement de clic initié par l'utilisateur et peut bloquer la fenêtre contextuelle.
la source
$window
est juste la manière d'utiliser AngularJSwindow
. Vous pouvez simplement utiliser à lawindow
place. Plus d'infos: docs.angularjs.org/api/ng/service/$windowMini-solution claire
$('<form action="http://samedomainurl.com/" target="_blank"></form>').submit()
la source
Vous pouvez utiliser ce code pour ouvrir dans un nouvel onglet.
Je l'ai obtenu de stackoverflow .
la source
Meilleure façon d'utiliser:
1- ajoutez un lien vers votre html:
2- ajouter la fonction JS:
3- Appelez simplement la fonction OpenNewTab avec le lien souhaité
la source