I have a link which should open in a new tab, but if the tab is already open, just switch to it. I\'ve tried with javascript, wnd = window.open() and than wnd.focus(), that
Different browsers behave differently for window.open() and focus().
For this code window.open('www.sample.com','mywindow').focus()
Fiddle to test with: http://jsfiddle.net/jaraics/pEG3j/
If you are not interested in retaining the state of a previously opened tab, you can do this:
var loadingTableWnd;
function openOrSwitchToWindow(url) {
if (loadingTableWnd != undefined) {
loadingTableWnd.close();
}
loadingTableWnd = window.open(url,'myFrame');
}
You shouldn't need any logic for something like this. By default, specifying the second parameter for window.open()
gives the window a "name", that the browser remembers. If you try to call window.open()
with the same name (after it's already been opened), it doesn't open a new window...but you might still need to call .focus()
on it. Try this:
var a = window.open(url, "name");
a.focus();
Those should be the only lines of code in your function, and you don't need the loadingTableWnd
variable...
In Firefox 66 and Chrome 74 this works for me:
wnd = window.wnd && window.wnd.close() || window.open(url, "wnd");
Not tested in other browsers. Thanks to roberto (in the comment of the MarkZ answer) to point me on this solution. (I could not add a comment in that answer due my lack of reputation, sorry).
window.focus() solution was not fit my needs as this other one.
window.focus()
is widely supported and seems to be working fine in both Internet Explorer and Firefox for me, the problem should be in your code. I've created a simple jsFiddle for you to test.
If the window is already opened and if you want to focus on that window you can use
window.open('', 'NameOfTheOpenedWindow').focus();