...

View Full Version : Problem with window.opener in Firefox/Mozilla



fogwolf
08-31-2004, 06:33 PM
First a basic outline of what I am trying to do:

I want to have a page spawn a pop-up when you click "submit" on its form. On this pop-up page there will be another form. When you click "submit" on the pop-up's form I want the pop-up to close & a new page to load in the "parent" window/page. I have this working in IE but cannot get it to work in Firefox. The parent window correctly loads the new page after submitting from the pop-up, however the pop-up will not close. Here is what I have in my pop-up page:

<body bgcolor=#fffff0 onLoad="window.opener.name='mainPage';window.opener.opener=window">

Basically giving a name to the parent window & then setting the parent window's opener to the pop-up. Here is my form tag for the pop-up page:

<form action=geturls.jsp target="mainPage" onSubmit="return validate(this)">

So now the target of the submission from the pop-up is the initial parent window. The next page which loads in the parent window (after submitting from the pop-up) has the following body tag:

<body bgcolor=#fffff0 onLoad="javascript:window.opener.close()">

Since I set the pop-up as the opener of the parent window from the pop-up html with the tag I show above, this should work. It does work perfectly in IE but in Firefox the pop-up stays open & I get the following javascript error:

window.opener has no properties

I am using Firefox 0.9.3.

Thanks!

fogwolf
08-31-2004, 06:45 PM
P.S. I should also mention that the "validate()" method in pop-up needs to return "true" if there are no validation errors with the pop-up's form & then post the form to the main page since it loads a *different* page (i.e. it doesn't just reload the page already loaded in the parent window), so I cannot just call "window.close()" in this function.

jamescover
08-31-2004, 11:14 PM
Basically giving a name to the parent window & then setting the parent window's opener to the pop-up. Here is my form tag for the pop-up page:


What?






I want to have a page spawn a pop-up when you click "submit" on its form. On this pop-up page there will be another form. When you click "submit" on the pop-up's form I want the pop-up to close & a new page to load in the "parent" window/page


I realize you have a form validation scripts involved (which you haven't provided), but just write the following logic into them:


Main Page:


<form onsubmit="javascript:window.open('somePage.html','','');">
<input type=submit>
</form>

Popup:


<form onsubmit="javascript:window.opener.location.href='yourNewPage.html';self.close();">
<input type=submit>
</form>

This will work in both browsers.


-james

glenngv
09-01-2004, 07:20 AM
So now the target of the submission from the pop-up is the initial parent window. The next page which loads in the parent window (after submitting from the pop-up) has the following body tag:

<body bgcolor=#fffff0 onLoad="javascript:window.opener.close()">


Try changing it to:

<body bgcolor=#fffff0 onLoad="w=window.open('','TheNameOfPopup');w.close()">

That will re-acquire the window handle of the popup and it will now be able to call the close() method. So no need for the popup to set itself as the opener of the parent window.

Now if that page will be called by other pages, you have to dynamically generate (in the server-side) that onload handler if only the referring page is the popup or by any other means.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum