我想在网页上创建一个链接,将关闭浏览器中当前活动的选项卡,而不关闭浏览器中的其他选项卡。当用户单击关闭链接时,将出现一条警告消息,要求用户使用“YES”和“NO”两个按钮确认。如果用户单击“是”,关闭该页面,如果“否”,什么都不做。
怎样才能做到呢?有什么建议吗?
我想在网页上创建一个链接,将关闭浏览器中当前活动的选项卡,而不关闭浏览器中的其他选项卡。当用户单击关闭链接时,将出现一条警告消息,要求用户使用“YES”和“NO”两个按钮确认。如果用户单击“是”,关闭该页面,如果“否”,什么都不做。
怎样才能做到呢?有什么建议吗?
当前回答
不好意思,我最近实现了一个本地托管的站点,它需要关闭当前浏览器选项卡的能力,并发现了一些有趣的变通方法,这些方法在我能找到的任何地方都没有很好的记录,所以我自己去做了。
注意:这些解决方案都是在本地托管站点的情况下完成的,并且(Edge除外)需要专门配置浏览器,因此对于公共托管站点来说并不理想。
背景:
在过去,jQuery脚本window.close()能够在大多数浏览器上毫无问题地关闭当前选项卡。然而,大多数现代浏览器不再支持这个脚本,可能是出于安全原因。
当前功能:
Window.close()将适用于由脚本打开的标签,或由target="_blank"(在新标签中打开)的锚点打开的标签
参见@killstreet对@calios的回答的评论
浏览器特定的解决方案:
谷歌Chrome:
Chrome不允许window.close()脚本被运行,如果你尝试使用它什么也不会发生。通过使用Chrome插件TamperMonkey,我们可以使用window.close()方法,如果你包含// @grant窗口。关闭TamperMonkey的UserScript头文件。
例如,我的脚本(当一个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。
这允许您直接在jQuery文件中使用window.close()方法,就像您使用任何其他脚本一样。
例如,该脚本将首选项设置为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版本类似
最后提醒:Chrome和Firefox的解决方案都是浏览器故意禁用的,可能是出于安全原因。它们也都要求用户事先配置浏览器以使其兼容,因此可能不适用于公共站点,但对于像我这样的本地托管解决方案非常理想。
其他回答
下面是如何创建这样一个链接:
<a href=“javascript:if(“Close window?”)window. Close ()闭> < / a >
您将需要Javascript来完成此操作。使用window.close ():
close();
注意:当前选项卡是隐含的。这是等价的:
window.close();
或者您可以指定一个不同的窗口。
So:
function close_window() {
if (confirm("Close Window?")) {
close();
}
}
HTML:
<a href="javascript:close_window();">close</a>
or:
<a href="#" onclick="close_window();return false;">close</a>
这里返回false以防止事件的默认行为。否则浏览器将尝试访问该URL(显然不是这样)。
现在window.confirm()对话框上的选项将是OK和Cancel(不是Yes和No)。如果你真的想要“是”和“否”,你需要创建某种模式Javascript对话框。
注意:与上面的有特定于浏览器的区别。如果你用Javascript打开了这个窗口(通过window.open()),那么你可以用Javascript关闭这个窗口。Firefox不允许关闭其他窗口。我相信IE会要求用户确认。其他浏览器可能有所不同。
在FF 18和Chrome 24测试成功:
插入头部:
<script>
function closeWindow() {
window.open('','_parent','');
window.close();
}
</script>
HTML:
<a href="javascript:closeWindow();">Close Window</a>
感谢马科斯·j·德雷克。
不好意思,我最近实现了一个本地托管的站点,它需要关闭当前浏览器选项卡的能力,并发现了一些有趣的变通方法,这些方法在我能找到的任何地方都没有很好的记录,所以我自己去做了。
注意:这些解决方案都是在本地托管站点的情况下完成的,并且(Edge除外)需要专门配置浏览器,因此对于公共托管站点来说并不理想。
背景:
在过去,jQuery脚本window.close()能够在大多数浏览器上毫无问题地关闭当前选项卡。然而,大多数现代浏览器不再支持这个脚本,可能是出于安全原因。
当前功能:
Window.close()将适用于由脚本打开的标签,或由target="_blank"(在新标签中打开)的锚点打开的标签
参见@killstreet对@calios的回答的评论
浏览器特定的解决方案:
谷歌Chrome:
Chrome不允许window.close()脚本被运行,如果你尝试使用它什么也不会发生。通过使用Chrome插件TamperMonkey,我们可以使用window.close()方法,如果你包含// @grant窗口。关闭TamperMonkey的UserScript头文件。
例如,我的脚本(当一个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。
这允许您直接在jQuery文件中使用window.close()方法,就像您使用任何其他脚本一样。
例如,该脚本将首选项设置为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版本类似
最后提醒:Chrome和Firefox的解决方案都是浏览器故意禁用的,可能是出于安全原因。它们也都要求用户事先配置浏览器以使其兼容,因此可能不适用于公共站点,但对于像我这样的本地托管解决方案非常理想。
这是解决这个问题的一种方法,像这样声明一个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>