Ouvrir le lien dans une nouvelle fenêtre ou un focus si déjà ouvert
J'ai un lien qui devrait ouvrir dans un nouvel onglet, mais si l'onglet est déjà ouvert, il suffit de passer pour elle.
J'ai essayé avec du javascript, wnd = fenêtre.open() et que wnd.focus(), qui fonctionne dans Chrome 19, mais pas dans FF 13 ou IE 9.
Voici le code que j'ai écrit :
<script type="text/javascript">
var loadingTableWnd;
function openOrSwitchToWindow(url){
if(loadingTableWnd == undefined)
loadingTableWnd = window.open(url,'myFrame');
else
loadingTableWnd.focus();
}
</script>
<a href='javascript:openOrSwitchToWindow("/");' >Loading Table</a>
Une idée de comment puis-je ouvrir ou de passer à partir de tous les navigateurs?
MODIFIER: j'ai besoin d'ouvrir le lien dans un nouvel onglet, pas une fenêtre autonome.
- Il y a un bug qui a été déposé il y a un moment, n'a pas été encore fixée - bugzilla.mozilla.org/show_bug.cgi?id=416771
- Ce bug a été présenté en 2008. Ici, il est en 2016 avec Firefox 47 et il n'a toujours pas été résolu. Quelqu'un peut-il (avec un peu de traction) merci de dégénérer?
Vous devez vous connecter pour publier un commentaire.
Différents navigateurs se comportent différemment pour la fenêtre.open() et focus().
Pour que ce code
window.open('www.sample.com','mywindow').focus()
De violon pour faire des tests: http://jsfiddle.net/jaraics/pEG3j/
Vous ne devriez pas avoir besoin de toute logique pour quelque chose comme ça. Par défaut, en précisant le deuxième paramètre pour
window.open()
donne la fenêtre "nom", que le navigateur se souvient. Si vous essayez d'appelerwindow.open()
avec le même nom (après qu'il a déjà été ouvert), il ne s'ouvre pas une nouvelle fenêtre...mais vous pouvez toujours besoin d'appeler.focus()
sur elle. Essayez ceci:Ceux qui devraient être les seules lignes de code dans votre fonction, et vous n'avez pas besoin de la
loadingTableWnd
variable...Si la fenêtre est déjà ouverte et si vous voulez vous concentrer sur cette fenêtre, vous pouvez utiliser
Si vous n'êtes pas intéressé à conserver l'état d'un onglet déjà ouvert, vous pouvez le faire:
window.focus()
est largement pris en charge et semble fonctionner correctement dans Internet Explorer et Firefox pour moi, le problème devrait être dans votre code. J'ai créé un simple jsFiddle pour le tester.Dans Firefox 66 et Chrome 74 cela fonctionne pour moi:
Pas testé sur d'autres navigateurs. Merci à roberto (dans le commentaire de la MarkZ de réponse) pour me diriger sur cette solution. (Je ne pouvais pas ajouter un commentaire dans sa réponse, en raison de mon manque de réputation, désolé).
fenêtre.focus() la solution n'était pas adapté à mes besoins en tant que tel autre.