在新窗口中打开div-单击按钮

时间:2019-05-13 10:34:48

标签: javascript jquery angularjs

我尝试在新窗口中打开一个div,并尝试使用window.open,它按预期工作。

HTML:

<div id="pass">pass this to the new window</div>
<a href="#" onclick="openWin()">click</a>

JS:

  function openWin() {
    var divText = document.getElementById("pass").outerHTML;
    var myWindow = window.open('', '', 'width=200,height=100');
    var doc = myWindow.document;
    doc.open();
    doc.write(divText);
    doc.close();
  }

http://jsfiddle.net/KZYJU/

问题:如果窗口已经打开,则当我再次单击该按钮时,它不应再次打开新窗口。 用户应该只能看到一个窗口。 就我而言,如果我单击按钮10次,则会打开10个窗口。

伙计们,请为此提供帮助。

4 个答案:

答案 0 :(得分:2)

您可以这样做:

  var popup;

  function openWin() {
    if (popup && !popup.closed) {
      popup.focus();
      /* or do something else, e.g. close the popup or alert a warning */
    } else {
      var divText = document.getElementById("pass").outerHTML;
      popup = window.open('', '', 'width=200,height=100');
      var doc = popup.document;
      doc.open();
      doc.write(divText);
      doc.close();
    }
  }

这将检查弹出窗口是否打开,如果打开则将其聚焦。

Demo

答案 1 :(得分:1)

只需玩Boolean标志。首次单击时将其设为true。并以此限制它。

var flag = false;
function openWin() {
  if(!flag) {
      var divText = document.getElementById("pass").outerHTML;
      var myWindow = window.open('', '', 'width=200,height=100');
      var doc = myWindow.document;
      doc.open();
      doc.write(divText);
      doc.close();
      flag = true
    }
}
<div id="pass">pass this to the new window</div>
<a href="#" onclick="openWin()">click</a>

答案 2 :(得分:1)

由于您可以在新窗口中编写一些脚本,因此可以使用cookie在其中存储类似标志的数据,以便您知道该窗口当前处于打开状态。

在主页上,首先将标志(我将其命名为windowOpen)设置为false,并在每次单击链接时进行检查。如果为假,则打开新窗口;否则为0。否则,什么都不做。

在随后的窗口中,将标志在打开时设置为true,在关闭时将其设置为false。

答案 3 :(得分:1)

在呼叫window.open的窗口中设置一个窗口名称

window.open('', 'popupWindowName', 'width=200,height=100');

  

windowName是一个DOMString,指定要将指定资源加载到的浏览上下文(窗口或选项卡)的名称;如果名称不表示现有上下文,则创建一个新窗口,并为其指定由windowName指定的名称。然后,通过将其指定为或元素的目标属性,可以将该名称用作链接和表单的目标。该名称不应包含空格。请记住,这将不会用作窗口显示的标题。   如果该字符串为空,则浏览器每次都会创建一个新窗口(当该字符串替换为NULL时,此行为将无效)。

Source