Ekta
Ekta

Reputation: 41

How to set the focus to a child window without refreshing it?

I am having a web page which contain four links, each link open a popup window. I am using a common JavaScript function to open popup window, as given below

function OpenPopup(pageURL, title,w,h) {

    var left = (screen.width/2)-(w/2);

    var top = (screen.height/2)-(h/2);

    var targetWin = window.open (pageURL, title, 'toolbar=no, location=no, 
        directories=no, status=no, menubar=no, scrollbars=Yes, resizable=no, 
        copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);

    targetWin.focus();

}

When I click on a link it will open a popup window, which contain a data entry form, I entered some information into that form. Then I need to review other information, from other popup window, so i go back to my main window, click on another link, a new popup window will get open which contain the information I need to review. I get the information and close this popup window, so now i am on my main window, then again I click on the link for that data entry form, so the popup window comes up but i lost the information that I have entered, it's because I am opening the popup window once again, and the new popup window will replace the existing popup with the same name.

Now my questions are:

  1. Is their any way, I can check out the if popup window is already open from parent window?

  2. If the popup window is already open how can I just set the focus to it, rather then reloading it?

  3. How can I refer a child window from parent window, without having object of child window just by the name of child window?

  4. Can I refer a child window from a parent window, even after refreshing the parent window?

Upvotes: 4

Views: 12318

Answers (2)

Aravindan R
Aravindan R

Reputation: 3084

For 1 and 2 , you can use this function

// loads an URL into the popup without reloading it
function popupnr(mylink, windowname, refocus) {
    // open the window with blank url
    var mywin = window.open('', windowname, 'window attrs here');

    // if we just opened the window
    if (mywin.closed || (!mywin.document.URL) || (mywin.document.URL.indexOf("about") == 0)) {
        mywin.location = mylink;
    }
    else if (refocus) {
        mywin.focus();
    }

    // return the window
    return mywin;
}
  1. You cant refer a child window by its name. There is no window.children. You need to call window.open to get a reference.

  2. Yes you can. But u need to use the same window name while calling window.open

Upvotes: 5

ds_student
ds_student

Reputation: 86

I think what you want for 1 and 2 is:

if(!targetWin)
{
    var targetWin = window.open (pageURL, title, 'toolbar=no, location=no, 
        directories=no, status=no, menubar=no, scrollbars=Yes, resizable=no, 
        copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
}
targetWin.focus();

Upvotes: 0

Related Questions