我尝试在新窗口中打开一个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();
}
问题:如果窗口已经打开,则当我再次单击该按钮时,它不应再次打开新窗口。 用户应该只能看到一个窗口。 就我而言,如果我单击按钮10次,则会打开10个窗口。
伙计们,请为此提供帮助。
答案 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();
}
}
这将检查弹出窗口是否打开,如果打开则将其聚焦。
答案 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时,此行为将无效)。