Main window call Javascript function in popup window, and vice versa

J

Jimmy

It is also possible for popup window to call function in main window
by using the opener property. Will "opener.someFunctionInMain(param1,
param2)" in the popup window work?

It's possible for main window to call function in the popup window,
right? The following is a sample code (close popup window causes to
show alert window) which doesn't seems to work. Can anyone see the
problem?

// main
window /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

<html><head></head><body onLoad="testPopup()">
<script type="text/javascript">
<!--
var popupWindow;

function testPopup() {
popupWindow = window.open("child.html", "Pop", "width=700,
height=400, scrollbars=1, dependent=yes");
popupWindow.focus();
}

// NOTE this one doesn't work in Mozilla and just commented out
//popupWindow.onunload = function() {
// alert("closing child");
//}

// NOTE this doesn't seems to work either
popupWindow.onunload = doOnunload;
function doOnunload() {
// expecting alert window will show up when popup window close
alert("closing child");
}
-->
</script>
</body></html>

// popup
window /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

<html><head></head>
<body>
<form id="blahForm">
<input type="hidden" id="blahId" value="blahValue"/>
</form>
</body>
</html>
 
J

josh

It is also possible for popup window to call function in main window
by using the opener property. Will "opener.someFunctionInMain(param1,
param2)" in the popup window work?

It's possible for main window to call function in the popup window,
right? The following is a sample code (close popup window causes to
show alert window) which doesn't seems to work. Can anyone see the
problem?

// main
window /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

<html><head></head><body onLoad="testPopup()">
<script type="text/javascript">
<!--
var popupWindow;

function testPopup() {
popupWindow = window.open("child.html", "Pop", "width=700,
height=400, scrollbars=1, dependent=yes");
popupWindow.focus();

}

// NOTE this one doesn't work in Mozilla and just commented out
//popupWindow.onunload = function() {
// alert("closing child");
//}

// NOTE this doesn't seems to work either
popupWindow.onunload = doOnunload;
function doOnunload() {
// expecting alert window will show up when popup window close
alert("closing child");}

-->
</script>
</body></html>

// popup
window /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

<html><head></head>
<body>
<form id="blahForm">
<input type="hidden" id="blahId" value="blahValue"/>
</form>
</body>
</html>

I post the right code:
<html><head></head><body onLoad="testPopup()">
<script type="text/javascript">
<!--
var popupWindow;

function testPopup()
{
popupWindow = window.open("child.html", "Pop", "width=700,
height=400, scrollbars=1, dependent=yes");
popupWindow.focus();

// put here.....anonymous works on MOZILLA!!!!
popupWindow.onunload = function()
{
alert("closing child");
}

}
-->
</script>
<body onload="testPopup()">
</body>
</html>

Bye
 
T

Thomas 'PointedEars' Lahn

josh said:
I post the right code:

What is supposed to be "right" about this code is beyond me.
<html><head></head><body onLoad="testPopup()">
http://validator.w3.org/

<script type="text/javascript">
<!--

It is unnecessary, and it is error-prone to try to "comment out" script
element content. Worst case: syntax error.
var popupWindow;

function testPopup()
{
popupWindow = window.open("child.html", "Pop", "width=700,
height=400, scrollbars=1, dependent=yes");

window.open() is a host object's method that should be feature-tested before
being called.

"Pop" maybe is used already as window name, so the respective window will be
reused. This can be prevented if a timestamp, being a unique number over
time, is prefixed, infixed or suffixed to the window name.

The feature string must not contain spaces. It has to be `scrollbars'
(without `=1') to be compatible. `dependent' (without `=yes') suffices.
IMHO, a popup should always be `resizable' as well; scrollbars sometimes
fail to do their job.
popupWindow.focus();

`popupWindow' may not return a Window object reference, so it should be
subject to a type-converting test. Window::focus() is a host object's
method that should be feature-tested for.

It may not even work because current browsers have an option to prevent
windows from being focused by scripting. (IIRC, it was discussed recently
here.)
// put here.....anonymous works on MOZILLA!!!!

Your Exlamation Mark key is borken.
popupWindow.onunload = function()
{
alert("closing child");
}

This *may* work.

This line is unecessary and error-prone; `-', `--' and `>' are operators.
</script>
<body onload="testPopup()">

This unrequested popup will probably not open because of a popup blocker.
Furthermore, there is a duplicate `body' element, or a `script' element
outside the `body' element (whatever way you want it), which is not Valid
markup (see above.)
</body>
</html>

Please *don't reply* if you lack the minimum clue. Nobody is helped
by that (except maybe yourself). Thank you for your attention.


PointedEars
 
H

Henry

Your Exlamation Mark key is borken.


This *may* work.
<snip>

It seems unlikely that it would. There will be a timing issue where
the new browser window is opened and makes its HTTP request to the
server, the script goes on to execute the above and attach an onunload
handler to the window object of the new browser window, and then the
HTTP response arrives, loads a new page, and clears all of the
listeners previously associated with the window, along with all the
other script assigned properties of the window object.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,969
Messages
2,570,161
Members
46,705
Latest member
Stefkari24

Latest Threads

Top