J'ai une boîte de sélection qui appelle window.open(url)
lorsqu'un élément est sélectionné. Firefox ouvrira la page dans un nouvel onglet par défaut. Cependant, je voudrais que la page s'ouvre dans une nouvelle fenêtre, pas un nouvel onglet.
Comment puis-je accomplir cela?
javascript
firefox
Adam
la source
la source
Réponses:
Donnez à la fenêtre un paramètre «spécifications» avec largeur / hauteur. Voir ici pour toutes les options possibles.
Lorsque vous spécifiez une largeur / hauteur, il l'ouvrira dans une nouvelle fenêtre au lieu d'un onglet.
la source
Vous n'avez pas besoin d'utiliser la hauteur, assurez-vous simplement que vous l'utilisez
_blank
, sans elle, elle s'ouvre dans un nouvel onglet.Pour une fenêtre vide:
Pour une URL spécifique:
la source
location=0
est nécessaire lorsque le JS est appelé à partir d'un bouton ou d'un élément d'ancrage.location=0
des paramètres. Je suggérerais également de nommer la fenêtre au lieu d'utiliser à l'aide de la_blank
cible, de sorte que la même fenêtre soit utilisée à nouveau si l'utilisateur clique plusieurs fois sur l'élément qui ouvre la fenêtre contextuelle, et de l'enchaîner avec defocus()
telle sorte que déjà une fenêtre contextuelle ouverte soit mise enwindow.open('http://stackoverflow.com', 'Stack_Overflow','location=0').focus();
Je peux me tromper, mais d'après ce que je comprends, cela est contrôlé par les préférences du navigateur de l'utilisateur, et je ne pense pas que cela puisse être annulé.
la source
Essayer:
J'ai du code qui fait ce que vous dites, mais il contient beaucoup de paramètres. Je pense que ce sont le strict minimum, faites-moi savoir si cela ne fonctionne pas, je posterai le reste.
la source
OK, après avoir fait beaucoup de test, voici ma conclusion:
Lorsque vous effectuez:
ou quoi que vous mettiez dans le champ de destination, cela ne changera rien: la nouvelle page sera ouverte dans un nouvel onglet (dépend donc des préférences de l'utilisateur)
Si vous voulez que la page soit ouverte dans une nouvelle "vraie" fenêtre, vous devez mettre un paramètre supplémentaire. Comme:
Après le test, il semble que le paramètre supplémentaire que vous utilisez n'a pas vraiment d'importance: ce n'est pas le fait que vous mettez "ce paramètre" ou "cet autre" qui crée la nouvelle "vraie fenêtre" mais le fait qu'il y a un nouveau paramètre (s ).
Mais quelque chose est confus et peut expliquer beaucoup de mauvaises réponses:
Cette:
Et ça:
ne donnera PAS le même résultat.
Dans le premier cas, lorsque vous ouvrez une page sans paramètre supplémentaire, elle s'ouvre dans un nouvel onglet . Et dans ce cas, le deuxième appel sera également ouvert dans cet onglet raison du nom que vous donnez.
Dans le second cas, comme votre premier appel est effectué avec un paramètre supplémentaire, la page sera ouverte dans une nouvelle " vraie fenêtre ". Et dans ce cas, même si le deuxième appel est effectué sans le paramètre supplémentaire, il sera également ouvert dans cette nouvelle " vraie fenêtre" " ... mais même onglet!
Cela signifie que le premier appel est important car il a décidé où placer la page.
la source
Vous ne devriez pas en avoir besoin. Permettez à l'utilisateur d'avoir les préférences qu'il souhaite.
Firefox fait cela par défaut car ouvrir une page dans une nouvelle fenêtre est ennuyeux et une page ne devrait jamais être autorisée à le faire si ce n'est pas ce que souhaite l'utilisateur. (Firefox vous permet d'ouvrir des onglets dans une nouvelle fenêtre si vous le définissez de cette façon).
la source
Vous pouvez essayer la fonction suivante:
Le code HTML pour l'exécution:
la source
popup.location = URL;
? L'window.open()
appel doit l'ouvrir à l'URL appropriée et, dans votre exemple de code,URL
n'est pas défini, il va donc revenir à l' objet URL expérimental (et non largement pris en charge) . Tout en l'utilisant pour cela est discutable, je suis curieux de savoir quelles sont les motivations de son utilisation ici?La clé est les paramètres:
Si vous fournissez paramètres [Height = "", Width = ""], il s'ouvrira dans de nouvelles fenêtres.
Si vous ne fournissez PAS de paramètres, il s'ouvrira dans un nouvel onglet.
Testé dans Chrome et Firefox
la source
Fait intéressant, j'ai trouvé que si vous passez dans un vide chaîne (par opposition à une chaîne nulle ou une liste de propriétés) pour le troisième attribut de window.open, il s'ouvrirait dans un nouvel onglet pour Chrome, Firefox et IE. S'il était absent, le comportement était différent.
Voici donc mon nouvel appel:
la source
essayez cette méthode .....
la source
Pour moi, la solution était d'avoir
dans le 3ème paramètre. Testé sur la dernière FF / Chrome et une ancienne version d'IE11
L'appel de méthode complet que j'utilise est ci-dessous (comme j'aime utiliser une largeur variable):
la source
Je viens d'essayer cela avec IE (11) et Chrome (54.0.2794.1 canary SyzyASan):
... et il s'est ouvert dans une nouvelle fenêtre.
Ce qui signifie que Clint pachl avait raison quand il a dit que fournir n'importe quel paramètre entraînerait l'ouverture de la nouvelle fenêtre.
- et apparemment, cela ne doit pas être un paramètre légitime!
(YMMV - comme je l'ai dit, je ne l'ai testé qu'à deux endroits ... et la prochaine mise à niveau pourrait invalider les résultats, de toute façon)
ETA: Je viens de remarquer, cependant - dans IE, la fenêtre n'a pas de décorations.
la source
Répondu ici . Mais le poster à nouveau pour référence.
window.open()
ne s'ouvrira pas dans le nouvel onglet s'il ne se produit pas lors d'un événement de clic réel. Dans l'exemple donné, l'URL est ouverte lors d'un événement de clic réel. Cela fonctionnera à condition que l'utilisateur dispose des paramètres appropriés dans le navigateur.De même, si vous essayez de faire un appel ajax dans la fonction de clic et que vous souhaitez ouvrir une fenêtre en cas de succès, assurez-vous de faire l'appel ajax avec le
async : false
jeu d'options.la source
Je pense que ce n'est pas le problème des propriétés cibles html mais vous avez décoché "ouvrir les fenêtres nw dans un nouvel onglet à la place" option dans l'onglet "onglet" sous le menu "options" de Firefox. vérifiez-le et réessayez.
la source
J'avais cette même question mais j'ai trouvé une solution relativement simple.
En JavaScript, je cherchais pour
window.opener !=null;
déterminer si la fenêtre était une fenêtre contextuelle. Si vous utilisez un code de détection similaire pour déterminer si la fenêtre dans laquelle votre site est affiché est une fenêtre contextuelle, vous pouvez facilement la "désactiver" lorsque vous souhaitez ouvrir une "nouvelle" fenêtre en utilisant le nouveau JavaScript de la fenêtre.Il suffit de mettre cela en haut de votre page, vous voulez toujours être une "nouvelle" fenêtre.
Je l'utilise sur la page de connexion de mon site afin que les utilisateurs n'obtiennent pas de comportement contextuel s'ils utilisent une fenêtre contextuelle pour accéder à mon site.
Vous pouvez même créer une page de redirection simple qui fait cela, puis se déplace vers l'URL que vous lui avez donnée. Quelque chose comme,
JavaScript sur la page parent:
Et puis en utilisant un peu de javascript à partir d' ici, vous pouvez obtenir l'URL et y rediriger.
JavaScript sur la page de redirection:
la source