I am trying to use the following JavaScript to check if a popup page is still open.
The parent page (calling page to open popup) is open but this code continues to fail. I am calling it from an aspx popup page that has a masterpage inside another masterpage. So the click event that eventually calls this script is an Edit Link in a Gridview in a content Placeholder which is in the upper most master page content Placeholder, not sure if that has anything to do with it. The script fires but it does not see the parent page as open and not closed.
if (window.opener != null && !window.opener.closed) {
alert(window.opener);
var val = window.opener.parentFunc(a);
alert(a);
}
This is an IE only problem, Firefox can identify the window.opener
page. Tried multiple versions of IE all had issues, Firefox and Opera work though.
I actually used this alert statement....
alert(window.opener);
In IE returns Undefined.
In Firefox returned ObjectWindow.
I believe this is a security restriction in IE. Take a look at this thread and see if it answers your problem:
http://social.msdn.microsoft.com/Forums/en/iewebdevelopment/thread/0c014e78-8d35-4df3-93da-7f6a30b4ed8b
I got this to work by sending the script from VB.net like this....
Dim BrowserSettings As String = "status=no,toolbar=no, scrollbars =yes,menubar=no,location=no,resizable=no," & "titlebar=no, addressbar=no, width=650 ,height=800"
Dim URL As String = "testNewPage.aspx"
Dim scriptText1 As String = ("<script>javascript: var w = window.open('" & URL & "','_blank','" & BrowserSettings & "'); </script>")
ScriptManager.RegisterStartupScript(Me, GetType(Page), "ClientScript1", scriptText1, False)here
This isn't exactly what I wanted, but it seems to be working except now the popup page is not on top. Need to figure that part out.
I have been trying to apply focus, doesn't seem to work.
Also, tried a modaless popup, that works but I lose the reference to the open window then.
function getParentWindow(){
var father = window.opener;
if(father == undefined) {
father=window.dialogArguments
}
return father;
}