Search code examples
javascriptwindow.open

Window.open only if the window is not open


I have a link on my site that opens a new window to a page that plays a very long audio file. My current script works fine to open the page and not refresh if the link is clicked multiple times. However, when I have moved to a seperate page on my site and click this link again, it reloads. I am aware that when the parent element changes, I will lose my variable and thus I will need to open the window, overiding the existing content. I am trying to find a solution around that. I would prefer not to use a cookie to achieve this, but I will if required.

My script is as follows:

function OpenWindow(){
    if(typeof(winRef) == 'undefined' || winRef.closed){
    //create new
    winRef = window.open('http://samplesite/page','winPop','sampleListOfOptions');
    } else {
    //give it focus (in case it got burried)
     winRef.focus();
    } 
}

Solution

  • You should first to call winRef = window.open("", "winPopup") without URL - this will return a window, if it exists, without reloading. And only if winRef is null or empty window, then create new window.

    Here is my test code:

    var winRef;
    
    function OpenWindow()
    {
      if(typeof(winRef) == 'undefined' || winRef.closed)
      {
        //create new
        var url = 'http://someurl';
        winRef = window.open('', 'winPop', 'sampleListOfOptions');
        if(winRef == null || winRef.document.location.href != url)
        {
          winRef = window.open(url, 'winPop');
        }
      }
      else
      {
        //give it focus (in case it got burried)
        winRef.focus();
      } 
    }
    

    It works.