关闭弹出窗口

22

我有一个弹出窗口,使用以下代码打开:

function _openpageview(fieldid,objectid,opennew)
{
var url='/s_viewpagefield.jsp?fieldid='+fieldid+'&codedid='+objectid;

  web_window = window.open(url,'_blank', 'menubar=yes,location=no,scrollbars=yes,width=800,height=600,status=no,resizable=yes,top=0,left=0,dependent=yes,alwaysRaised=yes');
   web_window.opener = window;
   web_window.focus();


}

我该如何在弹出窗口内关闭该弹出窗口?

window.close();
self.close();
web_window.close();

都不起作用


@molokoloco的答案对我非常有效。 - RozzA
9个回答

42

一则古老的技巧...

var daddy = window.self;
daddy.opener = window.self;
daddy.close();

20
工作得如此出色,以至于我几乎要哭了 _ - hfingler
除非使用 window.open 打开,否则在 Safari 上不再工作。 - Ben Aubin
它正常工作。 - Brijesh Mavani

10
您只能使用Javascript关闭由Javascript打开的窗口,即当窗口是使用以下方式打开时:
window.open

然后。
window.close

会工作。否则不会。


4
对于这个看似简单的东西,它可以让人感到十分痛苦!我找到了一个非常好用的解决方案(class="video-close"明显是针对此按钮而言,且可选)。
 <a href="javascript:window.open('','_self').close();" class="video-close">Close this window</a>

2

当您尝试关闭窗口时,您的web_window变量可能已经超出了作用域。将以下行添加到_openpageview函数中以进行测试:

setTimeout(function(){web_window.close();},1000);

我需要从弹出窗口本身调用close函数...这样可以吗?据我所知,web_window将局限于父页面,弹出窗口将无法使用此变量... - Drew
1
应该使用 self.close(); - ic3b3rg
1
这应该可以从弹出窗口中运行。你检查代码是否被触发了吗?尝试使用alert("OK");self.close();如果你没有看到警报,那么你的代码没有运行。 - ic3b3rg

1
在我的情况下(Joomla 弹出窗口已打开),我不得不使用以下内容:
onclick="submit(); window.parent.location.reload(false);window.parent.SqueezeBox.close();"

希望这可以帮到你。

0

使用window.close()

javascript:window.close()

试试这个:

<html>
<header>
    <script>
        let newWebWindow;
        function openPageView() {
            newWebWindow = window.open("", "window", "width=200,height=100");
            newWebWindow.document.write(`<a href="javascript:window.close();"class="video-close">Close this window</a>`);
        }

        function closePageView() {
            newWebWindow.close();
        }
    </script>
</header>

<body>
    <h3 style="color:brown"> Close Window Example </h3>
    <button onclick="openPageView()">Open Page</button>
    <button onclick="closePageView()">Close Page</button>
</body>

</html>

0

打印后关闭弹出窗口。

在父窗口中。

  let IframeLink = '../Sale/PriceKOT?SalesID=@(Model.SalesInfo.SalesID)&PrintTypeID=3';
     var newwindow = window.open(IframeLink, "KOT Print", 'width=560,height=550,toolbar=0,menubar=0,location=0');
    if (window.focus) { newwindow.focus() }

    function closeThisPopUp() {            
        newwindow.close();
        printf();
    }       

在子窗口或弹出窗口中
 window.onafterprint = function (event) {
    opener.closeThisPopUp();
    window.close;
};

0

尝试这个解决方案

<html>
<script>
var newWindow;

function openWindow() {
  newWindow = window.open("", "myWindow", "width=200,height=100");
  newWindow.document.write('<a href="javascript:window.close();" class="video-close">Close this window</a>');
}

function closeWindow() {
  newWindow.close();
}
</script>
<h3 style="color:brown"> Close Window Example </h3>
<body>
<button onclick="openWindow()">Open New Window</button>
<br><br>
<button onclick="closeWindow()">Close New Window </button>

</body>
</html>

0
在我的情况下,当用户点击“确定”后阅读某些消息时,我只需要关闭我的弹出窗口并将用户重定向到他的个人资料页面。 我尝试了一些技巧,包括setTimeout + self.close(),但是在IE中,这会关闭整个选项卡...
解决方案: 我用一个简单的提交按钮替换了我的链接。
<button type="submit" onclick="window.location.href='profile.html';">buttonText</button>。 没有更多了。
这听起来可能很愚蠢,但是由于我的弹出窗口没有任何表单,所以我没有想到这样一个简单的解决方案。
我希望它能帮助像我这样的前端新手!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接