如何实现?有什么建议吗?
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(显然不存在的URL)。
现在,window.confirm()
对话框中的选项将是“确定”和“取消”,而不是“Yes”和“No”。如果你真的想要“Yes”和“No”,你需要创建一些模态JavaScript对话框。
注意: 上述内容存在浏览器特定的差异。如果你使用Javascript(通过window.open()
)打开窗口,则可以使用javascript关闭窗口。Firefox禁止关闭其他窗口。我相信IE会询问用户是否确认。其他浏览器可能会有所不同。
<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
另请参阅此文章 - hering试试这个
<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>
open(location, '_self').close();
- uınbɐɥs<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
参见此文章 - hering过去,jQuery脚本window.close()
能够在大多数浏览器上无问题地关闭当前标签页。然而,现代大多数浏览器不再支持这个脚本,可能是出于安全原因。
window.close()
将在由脚本打开的标签页上工作,或者由带有target="_blank"
的锚点(在新标签页中打开)打开,无需任何额外的设置或配置。
请参考@killstreet对@calios回答的评论
Chrome不允许运行window.close()脚本,如果你尝试使用它,什么都不会发生。然而,通过使用Chrome插件TamperMonkey,我们可以使用window.close()方法,只要在TamperMonkey的UserScript头部包含// @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有一个高级设置,您可以启用它来允许脚本关闭窗口,从而有效地启用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>
令人失望的是,Edge实际上在我尝试的所有3个浏览器中表现最好,并且在不需要任何配置的情况下与window.close()
方法配合使用。当运行window.close()
脚本时,会弹出一个额外的弹窗警告您当前页面正在尝试关闭当前标签,并询问您是否要继续。
编辑: 这是在基于Chromium之前的旧版Edge上进行的测试。我没有测试过,但想象它在基于Chromium的版本上的行为应该类似于Chrome。
这是可能的。我在整个网络上搜索了这个问题,但当我参加微软的一项调查时,终于得到了答案。
试试这个:
window.top.close();
这将会关闭当前的选项卡。
以下内容适用于Chrome 41:
function leave() {
var myWindow = window.open("", "_self");
myWindow.document.write("");
setTimeout (function() {myWindow.close();},1000);
}
我尝试了几个关于 FF 的想法,包括打开一个实际的网页,但似乎没有什么用。据我所知,如果通过 JS 真正地 打开了一个标签或窗口,那么任何浏览器都会使用 xxx.close() 关闭它,但至少 FF 无法通过在标签内部打开新内容来欺骗关闭一个标签。
当你考虑这一点时,这是有道理的 - 用户可能不想让 JS 关闭具有有用历史记录的标签或窗口。
window.close()
在2k21中无法工作,因为脚本只能关闭它们打开的窗口。
但是如果标签页不是手动打开而是自动打开的话 - 那么window.close()
就可以工作了。
自动方式(当close()
可以使用时):
<a href="/close" target="_blank">
浏览器将在新标签页中打开地址,这个标签页可以用close()
关闭close()
关闭close()
关闭手动方式(当它不起作用时):
对于仍在访问此页面的用户,您只能关闭由脚本打开的标签页或使用HTML的带有目标_blank的锚点标签。这两种情况都可以使用
<script>
window.close();
</script>
也可以尝试这个。在三种主要的浏览器上都适用于我。
<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>
版本88.0.4324.182(官方构建)(64位)
。 - Leroy
1
您只能关闭使用JavaScript打开的选项卡(如Ryan Joy所提到的)。2
,这里没有提到:只有当window.top.opener
(“父”窗口)不为null时,您才能关闭选项卡。 - Nico