window.open
Impossible d'ouvrir de manière fiable des fenêtres contextuelles dans un nouvel onglet dans tous les navigateurs
Différents navigateurs mettent en œuvre le comportement de window.open
de différentes manières, en particulier en ce qui concerne les préférences du navigateur d'un utilisateur. Vous ne pouvez pas vous attendre à ce que le même comportement window.open
soit vrai dans tous les navigateurs Internet Explorer, Firefox et Chrome, en raison des différentes manières dont ils gèrent les préférences du navigateur d'un utilisateur.
Par exemple, les utilisateurs d'Internet Explorer (11) peuvent choisir d'ouvrir des fenêtres contextuelles dans une nouvelle fenêtre ou un nouvel onglet, vous ne pouvez pas forcer les utilisateurs d'Internet Explorer 11 à ouvrir des fenêtres contextuelles d'une certaine manière window.open
, comme mentionné dans la réponse de Quentin .
En ce qui concerne les utilisateurs de Firefox (29), l'utilisation window.open(url, '_blank')
dépend des préférences de l'onglet de leur navigateur, mais vous pouvez toujours les forcer à ouvrir des fenêtres contextuelles dans une nouvelle fenêtre en spécifiant une largeur et une hauteur (voir la section "Qu'en est-il de Chrome?" Ci-dessous).
Manifestation
Accédez aux paramètres de votre navigateur et configurez-le pour ouvrir des fenêtres contextuelles dans une nouvelle fenêtre.
Internet Explorer (11)
Page de test
Après avoir configuré Internet Explorer (11) pour ouvrir des fenêtres contextuelles dans une nouvelle fenêtre comme illustré ci-dessus, utilisez la page de test suivante pour tester window.open
:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814');">
<code>window.open(url)</code>
</button>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', '_blank');">
<code>window.open(url, '_blank')</code>
</button>
</body>
</html>
Notez que les popups sont ouverts dans une nouvelle fenêtre, pas un nouvel onglet.
Vous pouvez également tester ces extraits ci-dessus dans Firefox (29) avec sa préférence de tabulation définie sur de nouvelles fenêtres, et voir les mêmes résultats.
Et Chrome? Il implémente window.open
différemment d'Internet Explorer (11) et de Firefox (29).
Je ne suis pas sûr à 100%, mais il semble que Chrome (version 34.0.1847.131 m
) ne semble pas avoir de paramètres que l'utilisateur peut utiliser pour choisir d'ouvrir ou non des fenêtres contextuelles dans une nouvelle fenêtre ou un nouvel onglet (comme Firefox et Internet Explorer avoir). J'ai vérifié la documentation de Chrome pour gérer les fenêtres pop-up , mais cela ne mentionnait rien de ce genre de chose.
De plus, une fois de plus, différents navigateurs semblent implémenter le comportement de window.open
différemment. Dans Chrome et Firefox, la spécification d'une largeur et d'une hauteur forcera une fenêtre contextuelle, même lorsqu'un utilisateur a configuré Firefox (29) pour ouvrir de nouvelles fenêtres dans un nouvel onglet (comme mentionné dans les réponses à JavaScript ouvert dans une nouvelle fenêtre, pas un onglet ) :
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', 'test', 'width=400, height=400');">
<code>window.open(url)</code>
</button>
</body>
</html>
Cependant, le même extrait de code ci - dessus ouvrira toujours un nouvel onglet dans Internet Explorer 11 si les utilisateurs définissent des onglets en tant que préférences de navigateur, ne spécifiant même pas une largeur et une hauteur forcera une nouvelle fenêtre contextuelle pour eux.
Ainsi, le comportement de window.open
Chrome semble être d'ouvrir des fenêtres contextuelles dans un nouvel onglet lorsqu'il est utilisé dans un onclick
événement, de les ouvrir dans de nouvelles fenêtres lorsqu'il est utilisé à partir de la console du navigateur ( comme noté par d'autres personnes ), et de les ouvrir dans de nouvelles fenêtres lorsque spécifié avec une largeur et une hauteur.
Sommaire
Différents navigateurs implémentent le comportement de window.open
différemment en ce qui concerne les préférences de navigation des utilisateurs. Vous ne pouvez pas vous attendre à ce que le même comportement window.open
soit vrai dans tous les navigateurs Internet Explorer, Firefox et Chrome, en raison des différentes manières dont ils gèrent les préférences du navigateur d'un utilisateur.
Lecture supplémentaire