如何一次只显示一个弹出窗口?
我创建了一个名为parent.html的页面。在父页面上,我有两个链接,一个是注册,另一个是登录。 如果我点击注册然后注册页面打开作为子窗口 但 如果我点击登录然后已经打开子框(注册)应该关闭,登录子窗口应该打开或所有以前打开的子框应该消失。
我的代码如下
<input type="button" value="login" onclick="ShowPopup('login.asp')" />
<script type="text/javascript">
var popup;
function ShowPopup(url) {
popup = window.open(url, "self", "toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
popup.focus();
}
</script>
</form>
<input type="button" value="register" onclick="ShowPopup('register.asp')" />
<script type="text/javascript">
var popup;
function ShowPopup(url) {
popup = window.open(url, "self", "toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
popup.focus();
}
</script>
</form>
我更换了#34; popup&#34;用&#34; self&#34;。现在,一次只打开一个子窗口,而不是多个并且工作正常。
但是当我关闭子窗口时,父页面不会刷新。
子窗口代码如下
<form id="form1" runat="server">
<input type="button" value="Refresh Parent" onclick="RefreshParent()" />
<script type="text/javascript">
function RefreshParent() {
if (window.opener != null && !window.opener.closed) {
window.opener.location.reload();
}
}
window.onbeforeunload = RefreshParent;
</script>
</form>
请帮帮我
答案 0 :(得分:0)
首先,没有必要定义变量&amp;功能再次..现在解决方案 -
<script type="text/javascript">
var popup;
function ShowPopup(url) {
if(popup)
{
popup.close();
}
popup = window.open(url, "Popup", "toolbar=no,scrollbars=no,location=no,statusbar=no,
menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
popup.focus();
}
</script>
在您的子页面中,头部分(在关闭时刷新父窗口)
<script>
window.onunload = refreshParent;
function refreshParent() {
if(window.opener)
window.opener.location.reload(true);
}
</script>
默认情况下,reload()方法从缓存中重新加载页面,但您可以通过将参数传递给true来强制它从服务器重新加载页面。
- 或 -
您可以在打开子窗口时查看父窗口中的一些代码,并在其关闭刷新时查找其子窗口。
<script type="text/javascript">
var popup;
var lookupTimer=null;
function ShowPopup(url) {
if(popup)
{
popup.close();
}
popup = window.open(url, "Popup", "toolbar=no,scrollbars=no,location=no,
statusbar=no,menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
popup.focus();
lookupTimer = setInterval(function(){ loolUpChild(); }, 1000);
}
function loolUpChild()
{
if((popup.closed))
{
window.location.reload(true);
clearInterval(lookupTimer);
}
}
</script>
答案 1 :(得分:0)
创建一个全局变量,并在先前的弹出窗口打开然后先关闭并打开新的时保持你的旗帜 像
if(popup){
popup.close();
popup=false;
}
之后打开新的
window.open(url, "Popup", "toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=0,width=100,height=100,left = 490,top = 262");
popup = true;