Reload parent window when parent window changes - javascript

I want to refresh the parent window after closing the pop up window.
I have used
window.opener.location.reload();
This works fine in one case when the parent window is the calling window. But there is another scenario where we set the parent of the calling window as another window.
So instead of loading the calling parent window it loads the other page. Can we set a fixed parent window as in my case its obviously changing due to some business rules.

Related

Getting Child window reference from parent after parent is refreshed

Here is the scenario:
I'm in parent window. I click on a link, which opens a child window
Now I'm in child window, I enter some data and click on a submit button
Now, the child window refreshes. After the child window completes refreshing, the parent window refreshes.
After the parent window refreshes, the child window goes background, which I don't want. I want that to remain foreground.
NOW, I searched how to get the reference of child window from the parent window and found this link-
http://www.codeproject.com/Articles/25388/Accessing-parent-window-from-child-window-or-vice#b
My question is - Will I be able to successfully get the reference of the child window even after the parent window has refreshed?
More info: This happens only in IE and not in Chrome/Firefox.
UPDATE: As per this link - https://www.daniweb.com/programming/web-development/threads/48485/parentchild-windows-references
The parent will not have control over child anymore. But is there a way I can maintain the focus on the child window even after the parent window refreshes?

How to focus the parent page from child window in Firefox?

I am calling the parent page javascript function from child window with code below, which displays some alert message on parent page and closes the child window.
window.opener.CallAlert("test is"+test);
opener.focus();
self.close();
What is happening with above code snippet is alert comes on parent window but focus remains on child window. i need explicitly go to parent window. Once I click ok on alert child window closes.
Everything is fine but I want the to focus on parent window once i call the window.opener.CallAlert() from child window.
Edit
Looks like opener.focus(); works on IE but not mozilla. Any workaround for firefox?
It would appear that this is not guaranteed to work and is at the discretion of the browser.
See this thread: window.opener.focus() doesn't work
just try the obvious:
window.opener.focus();
try with delay setTimeout(function(){self.close()},300) and then display alert on parent page. It will schedule to close the current window after some delay automatically with display of alert message on parent signal

When to use window.opener / window.parent / window.top

In JavaScript when to use window.opener / window.parent / window.top ?
window.opener refers to the window that called window.open( ... ) to open the window from which it's called
window.parent refers to the parent of a window in a <frame> or <iframe>
window.top refers to the top-most window from a window nested in one or more layers of <iframe> sub-windows
Those will be null (or maybe undefined) when they're not relevant to the referring window's situation. ("Referring window" means the window in whose context the JavaScript code is run.)
I think you need to add some context to your question. However, basic information about these things can be found here:
window.opener
https://developer.mozilla.org/en-US/docs/Web/API/Window.opener
I've used window.opener mostly when opening a new window that acted as a dialog which required user input, and needed to pass information back to the main window. However this is restricted by origin policy, so you need to ensure both the content from the dialog and the opener window are loaded from the same origin.
window.parent
https://developer.mozilla.org/en-US/docs/Web/API/Window.parent
I've used this mostly when working with IFrames that need to communicate with the window object that contains them.
window.top
https://developer.mozilla.org/en-US/docs/Web/API/Window.top
This is useful for ensuring you are interacting with the top level browser window. You can use it for preventing another site from iframing your website, among other things.
If you add some more detail to your question, I can supply other more relevant examples.
UPDATE:
There are a few ways you can handle your situation.
You have the following structure:
Main Window
Dialog 1
Dialog 2 Opened By Dialog 1
When Dialog 1 runs the code to open Dialog 2, after creating Dialog 2, have dialog 1 set a property on Dialog 2 that references the Dialog1 opener.
So if "childwindow" is you variable for the dialog 2 window object, and "window" is the variable for the Dialog 1 window object. After opening dialog 2, but before closing dialog 1 make an assignment similar to this:
childwindow.appMainWindow = window.opener
After making the assignment above, close dialog 1.
Then from the code running inside dialog2, you should be able to use
window.appMainWindow to reference the main window, window object.
Hope this helps.
top, parent, opener (as well as window, self, and iframe) are all window objects.
window.opener -> returns the window that opens or launches the current popup window.
window.top -> returns the topmost window, if you're using frames, this is the frameset window, if not using frames, this is the same as window or self.
window.parent -> returns the parent frame of the current frame or iframe. The parent frame may be the frameset window or another frame if you have nested frames. If not using frames, parent is the same as the current window or self
when you are dealing with popups window.opener plays an important role, because we have to deal with fields of parent page as well as child page, when we have to use values on parent page we can use window.opener or we want some data on the child window or popup window at the time of loading then again we can set the values using window.opener

About Popup window data to Parent window

I am opening one Popup window on Button Click in main window, it is for Image Uploading.
when I am uploading Image , i.e. on Upload button click I am closing this Popup window and opening new Popup window.
And Now I want to display the Popup data to Parent window without refreshing, But I am not getting Parent window object.
i.e. window.opener or window.parent. Please give me help. How I will get Parent window object?
you can try this,
When first popup window is opened(uploading image window) get parent window object for this popup and store in some variable(java script variable ) like this
var parentWindowObject=window.opener;
Try passing this object variable to the second pop up window( on upload click) and in this page you will get it main page window reference (parentWindowObject) and using this you can fire new request to main page to post your required data as follows
parentWindowObject.location="your request";
Reason for not using window.opener in second popup
As you are opening a new popup from the present popup. The parent for the newpopup will be the popup which you are opening from here is your upload popup and you are closing the upload popup once you click on upload so for the new popup the value for window.opener(a reference for the parent window) will be null.
You can access the parent window by using window.opener
See window.opener
which returns a reference to the window that opened this current window. 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.

What's different when a page is opened by window.showModalDialog?

Anyone knows the difference?
The problem I met is that the page stops working correctly when opened by window.showModalDialog
window.showModalDialog vs window.open
Window.open will open up a new window through Javascript, with the URL and other features of the window that u pass as parameters. Here the parent window which opens the new window and the child window are independent windows.
Eg. Below
`window.open('winOpen.htm','name','height=255,width=250,toolbar=no,directories=no,status=no,
linemenubar=no,scrollbars=no,resizable=no');`
Window.showModalDialogue again works smilar to a window.open only diffrence being its a Modal window, It opens up as a new window but doesnt allow the user to access the parent window, unless you explicitly close it.
Here the child window is dependent on the parent window. If you close the parent window the child would also get closed.
window.showModalDialog("xpopupex.htm","name","dialogWidth:255px;dialogHeight:250px");
ShowModalDialogue windows can be used when u want the user to perform a particular action in the new window before he access the parent window again. like login before he can access the parent page..
tryed to make it as simple as possible...hope this help.. ;)

Categories