self.close()不使用keycode事件

时间:2011-11-01 17:54:32

标签: javascript jquery

我正在尝试使用ESC键关闭浏览器窗口,但不知道为什么self.close dos不起作用。

这就是我正在做的事情(我尝试使用document代替body,但没有改变):

    $('body').keydown(function(e) {
          if(e.keyCode == 27){
                alert(e.keyCode); // alert work fine ( 27 ) 
                self.close();
          }
    });

我缺少什么?

编辑:

做好这项工作:

    $("#closeWindow").click(function(){
        self.close();
    });

感谢。

3 个答案:

答案 0 :(得分:1)

Windows只能通过javascript关闭,如果它们是通过javascript打开的话。如果您正在使用的窗口未通过代码打开,则无法通过代码关闭它。请参阅此处的说明部分:https://developer.mozilla.org/en/DOM/window.close有一些旧的黑客可以在互联网上解决这个问题,但大多数浏览器在大多数浏览器中都已过时。

另外,您需要将keydown事件添加到document而不是body元素,当您使用self.close()时,您最好使用{{1}避免与范围混淆 - 你希望窗口关闭,所以显式没有坏处。

答案 1 :(得分:1)

由于您的警报正在运行,我认为self.close()因安全原因而失败。

此代码是解决此安全措施的黑客行为:

window.open('', '_self', '');
window.close();

答案 2 :(得分:0)

请尝试使用$(document)。没有“身体”对象可供您附加。