我的网站上有一个链接,可以打开一个指向播放很长音频文件的页面的新窗口。我当前的脚本可以很好地打开页面,并且如果多次单击链接不会刷新。但是,当我移动到我网站上的一个单独页面并再次单击此链接时,它会重新加载。我知道当父元素更改时,我将丢失我的变量,因此我需要打开窗口,覆盖现有内容。我正在努力寻找解决方案。我不想使用 cookie 来实现这一点,但如果需要,我会这样做。

我的脚本如下:

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();
    }
}

最佳答案

您应该首先在没有 URL 的情况下调用 winRef = window.open("", "winPopup") - 这将返回一个窗口(如果存在),而无需重新加载。并且仅当 winRefnull 或空窗口时,才创建新窗口。

这是我的测试代码:

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();
  }
}

有用。

10-08 09:34