不同的Web浏览器以不同方式处理window.close()函数。 IE提示用户进行确认,而Firefox和Safari只是无法兑现它,除非最初使用Javascript打开窗口并在控制台中显示一条消息。
我支持的组织内部使用的第三方Web应用程序在类似向导的系列页面末尾显示“关闭”按钮。这适用于IE,这是我们的大多数用户使用的。但是,这显然在FF中失败了。我宁愿保留按钮并使用Javascript来优雅地降级UI,方法是不在任何不执行window.close()的浏览器中显示该按钮。
根据经验,我尝试检查浏览器功能,而不是尽可能依赖基于浏览器检测的硬编码策略。有没有办法以编程方式检查window.close()的支持,以便我可以确定该按钮是否应该首先显示?
答案 0 :(得分:2)
试试这个:
演示:http://jsfiddle.net/ThinkingStiff/mnv87/
脚本:
function hasClose() {
var close = window.open( '', '', 'height=100,width=100,left=3500', false );
close.close();
return close.closed;
};
if( hasClose() ) {
//show button
} else {
//hide button
};
如果弹出窗口被阻止,注意hasClose()
也会返回false
。
答案 1 :(得分:1)
为什么不检查兼容性,然后追加兼容?使用jQuery:
<script type="text/javascript" src="latest_jquery_file.js"></script>
<script type="text/javascript">
$(document).on("ready", (function(e)
{
$("body").append('<p><a href="#" id="windowcloser">Close The Window!!</a></p>');
$('#windowcloser').click(function(){
window.close();
});
})
);
</script>
由于jQuery是跨浏览器兼容的,它应该
答案 2 :(得分:0)
很简单。您的脚本应该尝试(或try
)到window.close
,如果它在尝试后仍然活着 - 显示消息,并且可选地删除/替换页面内容,或使用location.reload
来不要让您的用户有任何理由留在页面上。
p.s。:请记住,从JavaScript关闭窗口非常不礼貌。所以你最好有一些很好的理由去做;)