So as it has been discussed elsewhere, a window can be closed by js using window.close()
only if it has been opened by a script.
I have a page that offers a button to open a discussion window. The discussion window opens to a new tab with window.open()
. The discussion page has a button that calls window.close()
, which closes the discussion window and takes you back to previous tab, so you can continue from where you left off.
The problem is that if someone takes a the url directly to the discussion window, the close button does not work.
Is there a way to detect if the window will be closable with window.close()
, so I can show the button only if it will work?
So as it has been discussed elsewhere, a window can be closed by js using window.close()
only if it has been opened by a script.
I have a page that offers a button to open a discussion window. The discussion window opens to a new tab with window.open()
. The discussion page has a button that calls window.close()
, which closes the discussion window and takes you back to previous tab, so you can continue from where you left off.
The problem is that if someone takes a the url directly to the discussion window, the close button does not work.
Is there a way to detect if the window will be closable with window.close()
, so I can show the button only if it will work?
2 Answers
Reset to default 16You can check to see if window.opener
is not null
:
When a window is opened from another window, it maintains a reference to that first window as window.opener. If the current window has no opener, this method returns NULL. Windows Phone browser does not support window.opener. It is also not supported in IE if the opener is in a different security zone.
You can try using the window.opener
object, which returns a reference to the window that opened the current window (if it's another window), or NULL
if the current window was not opened via JS.
if (window.opener) //Show button
window.close
do if it can't close the window? it might return undefined or give an error, you could check/catch that – atmd Commented Jun 1, 2015 at 14:23var chat = window.open()
when you open it form the button, and then setchat = null
on close.if(chat !== null)
then the window would have been opened via js – Seth McClaine Commented Jun 1, 2015 at 14:24