如何关闭浏览器窗口中的当前选项卡?

2020/09/27 02:21 · javascript ·  · 0评论

我想在网页上创建一个链接,该链接将关闭浏览器中当前活动的选项卡,而不关闭浏览器中的其他选项卡。
当用户单击关闭链接时,将出现一条警告消息,要求用户使用两个按钮“是”和“否”进行确认。如果用户单击“是”,则关闭该页面,如果“否”,则不执行任何操作。

如何做呢?有什么建议?

您将需要Javascript来执行此操作。用途window.close()

close();

注意:隐含当前选项卡。这等效于:

window.close();

或者您可以指定其他窗口。

所以:

function close_window() {
  if (confirm("Close Window?")) {
    close();
  }
}

使用HTML:

<a href="javascript:close_window();">close</a>

要么:

<a href="#" onclick="close_window();return false;">close</a>

return false在此处防止事件的默认行为。否则,浏览器将尝试转到该URL(显然不是)。

现在,window.confirm()对话框上的选项将为“确定”和“取消”(不是“是”和“否”)。如果您确实想要“是”和“否”,则需要创建某种模式的Javascript对话框。

注意:上述内容与浏览器特定。如果您使用Javascript(通过window.open()打开了窗口,则可以使用JavaScript关闭该窗口。Firefox不允许您关闭其他窗口。我相信IE会要求用户确认。其他浏览器可能会有所不同。

试试这个

<a href="javascript:window.open('','_self').close();">close</a>

此方法适用于Chrome和IE:

<a href="blablabla" onclick="setTimeout(function(){var ww = window.open(window.location, '_self'); ww.close(); }, 1000);">
    If you click on this the window will be closed after 1000ms
</a>

据我所知,Chrome或FireFox不再支持。在IE中(至少在Edge之前)仍然可能。

有可能的。我为此搜索了整个网络,但是当我参加了微软的一项调查时,我终于找到了答案。

试试这个:

window.top.close();

这将为您关闭当前选项卡。

在FF 18和Chrome 24中成功测试:

插入头部:

<script>
    function closeWindow() {
        window.open('','_parent','');
        window.close();
    }
</script> 

HTML:

<a href="javascript:closeWindow();">Close Window</a>

版权归Marcos J. Drake所有

以下内容适用于Chrome 41:

function leave() {
  var myWindow = window.open("", "_self");
  myWindow.document.write("");
  setTimeout (function() {myWindow.close();},1000);
}

我为FF尝试了几种想法,包括打开实际的网页,但似乎没有任何效果。据我了解,如果JS 确实打开了任何浏览器,则任何浏览器都会使用xxx.close()关闭标签或窗口,但是至少FF不能通过在该标签内打开新内容来欺骗FF关闭标签。

当您考虑时,这很有意义-用户可能不希望JS关闭具有有用历史记录的选项卡或窗口。

也尝试一下。在所有三种主要浏览器上为我工作。

<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>

不好意思,但是我最近实现了一个本地托管的站点,该站点需要能够关闭当前的浏览器选项卡,并且发现一些有趣的变通办法,而这些文件在我找不到的任何地方都没有得到很好的记录,因此我自己动手做。

注意:这些变通办法是在考虑本地托管站点的情况下完成的,并且(Edge除外)要求专门配置浏览器,因此对于公共托管站点而言不是理想的选择。

上下文:过去,jQuery脚本window.close()能够在大多数浏览器上没有问题地关闭当前选项卡。但是,现代浏览器可能出于安全原因不再支持此脚本。

谷歌浏览器:

Chrome不允许运行window.close()脚本,如果尝试使用它,则不会发生任何事情。通过使用Chrome插件TamperMonkey,如果您将TamperMonkey的UserScript标头包含在内,可以使用window.close()方法// @grant window.close

例如,我的脚本(当单击id ='close_page'的按钮并在浏览器弹出窗口上按下'yes'时触发):

// ==UserScript==
// @name         Close Tab Script
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Closes current tab when triggered
// @author       Mackey Johnstone
// @match        http://localhost/index.php
// @grant        window.close
// @require      http://code.jquery.com/jquery-3.4.1.min.js
// ==/UserScript==

(function() {
    'use strict';
    $("#close_page").click(function() {
        var confirm_result = confirm("Are you sure you want to quit?");
        if (confirm_result == true) {
            window.close();
        }
    });
})();

注意:此解决方案仅在不是最后一个打开的选项卡时才能关闭。如此有效,它无法关闭该选项卡,如果它会由于最后一个选项卡打开而导致窗口关闭。

Firefox:

Firefox具有高级设置,您可以启用该设置以允许脚本关闭窗口,从而有效地启用该window.close()方法。要启用此设置,请转至about:config,然后搜索并找到dom.allow_scripts_to_close_windows首选项并将其从false切换为true。

这样,您就可以像使用window.close()其他脚本一样直接在jQuery文件中使用该方法。

例如,此脚本在将首选项设置为true时可以完美地工作:

<script>
  $("#close_page").click(function() {
    var confirm_result = confirm("Are you sure you want to quit?");
    if (confirm_result == true) {
      window.close();
    }
  });
</script>

这比Chrome解决方法的效果要好得多,因为它允许用户关闭当前选项卡,即使它是唯一打开的选项卡,也不需要第三方插件。但是一个缺点是,它还使该脚本可以在不同的网站上运行(不仅是您打算在其上使用的网站),因此有可能构成安全隐患,尽管我无法想象关闭当前选项卡特别危险。

边缘:

令人失望的是,Edge实际上在我尝试的所有3种浏览器中都表现最佳,并且window.close()无需任何配置即可使用该方法。window.close()脚本运行,额外的弹出提示您的网页正试图关闭当前标签,并询问是否要继续。

在此处输入图片说明

最后说明: Chrome和Firefox的解决方案都是针对浏览器有意禁用(可能出于安全原因)的解决方法。它们都还要求用户事先配置其浏览器以使其兼容,因此对于打算供公众使用的站点可能不可行,但对于像我的本地托管解决方案是理想的。

希望这对您有所帮助!:)

对于仍在访问此页面的人,只允许您关闭由脚本或通过将HTML的定位标记与目标_blank一起使用打开的选项卡。这两个都可以使用

<script>
    window.close();
</script>
<button class="closeButton" style="cursor: pointer" onclick="window.close();">Close Window</button>

这为我做了工作

有点晚了,但这就是我发现的...

window.close()仅当您尝试close()使用window.open()方法的脚本打开了您尝试打开的窗口时,IE才起作用

!(请参阅下面的@killstreet关于目标_blank的锚标记的评论)

TLDR:chrome和firefox允许关闭它们。

您将收到控制台错误:脚本可能无法关闭脚本未打开的窗口。作为错误,仅此而已。

您可以在URL中添加一个唯一参数,以了解是否从脚本中打开了页面(例如时间)- 但它只是一个hack,而不是本机功能,在某些情况下失败

我找不到任何方法可以知道该页面是否通过open()打开,并且关闭不会引发错误。
这不会打印 “测试”:

try{
  window.close();
}
catch (e){
  console.log("text");
}

您可以在MDN中阅读更多有关close()函数的信息

创建这种链接的方法如下:

<a href="javascript:if(confirm('Close window?'))window.close()">close</a>

这是解决问题的一种方法,像这样声明一个JavaScript函数

<script>
  function Exit() {
     var x=confirm('Are You sure want to exit:');
     if(x) window.close();
   }
</script>

将以下行添加到HTML中,以使用 <button>

<button name='closeIt' onClick="Exit()" >Click to exit </Button>
本文地址:http://javascript.askforanswer.com/ruheguanbiliulanqichuangkouzhongdedangqianxuanxiangka.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!