如何在html元素上重写onkeydown?

时间:2011-10-25 22:29:38

标签: jquery html

我继承了一个在窗口弹出窗口中实现禁用F5的应用程序。

<body onkeydown="disableF5();">

但是,如果用户点击窗口中的正文下方并按下F5,页面仍会刷新。

我将函数调用移到了

<html onkeydown="disableF5();">

现在F5已禁用,一切正常运行。

然而,这不是拥有代码的最佳位置,如果我可以在<script>部分执行类似下面的操作,我会更喜欢它,这样我就可以添加注释并将其移动到外部文件中。

$("html").attr("onkeydown", "disableF5();");

这个jQuery片段没有按预期工作,但是我现在正陷入困境。

有没有办法设置<html>元素的属性?

编辑:我以为我会在这里抛出disableF5()函数。

function disableF5() {  
   if (window.event && window.event.keyCode == 116) { 
        window.event.cancelBubble = true;
        window.event.returnValue = false;
        window.event.keyCode = 0;
        window.status = "F5 is disabled on all popups";
        return false;
   }   
}

3 个答案:

答案 0 :(得分:2)

$('html').bind('keydown', function(){ disableF5(); });

请参阅documentation for $.bind()

编辑 - 中等详细说明:

在加载DOM时评估HTML onstuff属性。事后添加它们没有任何影响。因此,必须使用正确的JS事件绑定。

答案 1 :(得分:2)

这适用于最新的Chrome和FireFox,对我来说似乎比bind更清晰:

$(document.documentElement).keydown(disableF5);

答案 2 :(得分:1)

$('html').bind('keydown', function() { disableF5(); }));