我想在网页上创建一个链接,将关闭浏览器中当前活动的选项卡,而不关闭浏览器中的其他选项卡。当用户单击关闭链接时,将出现一条警告消息,要求用户使用“YES”和“NO”两个按钮确认。如果用户单击“是”,关闭该页面,如果“否”,什么都不做。
怎样才能做到呢?有什么建议吗?
我想在网页上创建一个链接,将关闭浏览器中当前活动的选项卡,而不关闭浏览器中的其他选项卡。当用户单击关闭链接时,将出现一条警告消息,要求用户使用“YES”和“NO”两个按钮确认。如果用户单击“是”,关闭该页面,如果“否”,什么都不做。
怎样才能做到呢?有什么建议吗?
当前回答
有点晚了,但这是我发现的……
window.close()将只工作(IE是一个例外)当你试图关闭()的窗口是由脚本使用window.open()方法打开的。
(请参阅下面@killstreet关于target _blank的锚标签的评论)
TLDR: chrome和firefox允许关闭它们。
你会得到控制台错误: 脚本不能关闭非脚本打开的窗口。 只是一个错误而已。
你可以在URL中添加一个唯一的参数来知道页面是否从脚本打开(比如时间)-但这只是一个黑客,而不是一个本地功能,在某些情况下会失败。
我找不到任何方法知道页面是否从open()打开, 并且close不会抛出和错误。 这将不会打印"test":
try{
window.close();
}
catch (e){
console.log("text");
}
你可以在MDN中阅读更多关于close()函数的信息
其他回答
此方法适用于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>
试试这个
<a href="javascript:window.open('','_self').close();">close</a>
有点晚了,但这是我发现的……
window.close()将只工作(IE是一个例外)当你试图关闭()的窗口是由脚本使用window.open()方法打开的。
(请参阅下面@killstreet关于target _blank的锚标签的评论)
TLDR: chrome和firefox允许关闭它们。
你会得到控制台错误: 脚本不能关闭非脚本打开的窗口。 只是一个错误而已。
你可以在URL中添加一个唯一的参数来知道页面是否从脚本打开(比如时间)-但这只是一个黑客,而不是一个本地功能,在某些情况下会失败。
我找不到任何方法知道页面是否从open()打开, 并且close不会抛出和错误。 这将不会打印"test":
try{
window.close();
}
catch (e){
console.log("text");
}
你可以在MDN中阅读更多关于close()函数的信息
以下工作为我在Chrome 41:
function leave() {
var myWindow = window.open("", "_self");
myWindow.document.write("");
setTimeout (function() {myWindow.close();},1000);
}
我尝试了几个FF的想法,包括打开一个实际的网页,但似乎都不起作用。据我所知,任何浏览器都会用xxx.close()关闭一个标签或窗口,如果它真的是由JS打开的,但FF,至少,不能通过在标签中打开新内容来关闭一个标签。
仔细想想,这是有道理的——用户可能不希望JS关闭一个有有用历史记录的选项卡或窗口。
这是可能的。我搜索了整个网络,但有一次当我做微软的一项调查时,我终于得到了答案。
试试这个:
window.top.close();
这将为您关闭当前选项卡。