Open link in new window or focus to it if already open
If the window is already opened and if you want to focus on that window you can use
window.open('', 'NameOfTheOpenedWindow').focus();
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...
Different browsers behave differently for window.open() and focus().
For this code window.open('www.sample.com','mywindow').focus()
- Chrome 20 opens a new tab, and focuses on subsequent open() calls regardless if focus() is called or not.
- Firefox 13 opens a new tab, focuses on first open(), does not focus on subsequent open() calls/disregards focus().
- IE 8 opens a new window, honors focus().
- Safari 5 opens a new window, and focuses on subsequent open() calls regardless if focus() is called or not.
Fiddle to test with: http://jsfiddle.net/jaraics/pEG3j/