我想在按F1时显示用户选择的帮助文件。这应该适用于我测试我的应用程序的每个浏览器。如何停止显示默认帮助文件?
答案 0 :(得分:16)
AFAIK,可以在除IE之外的任何浏览器中更改F1键的默认操作。 Microsoft团队通常会在他们的应用程序中保持一致的用户体验,这就是为什么F1无论返回 false 都会打开帮助的原因。话虽如此,但 window.onhelp 事件的形式有一种解决方法。
// Internet Explorer
if ("onhelp" in window)
window.onhelp = function () {
showMyHelpInsteadOfTheUsualDefaultHelpWindow(true);
return false;
}
// Others
else {
document.onkeydown = function(evt) {
cancelKeypress = (evt.keyCode == 112);
if (cancelKeypress) { // F1 was pressed
showMyHelpInsteadOfTheUsualDefaultHelpWindow(true);
return false;
}
}
// Additional step required for Opera
document.onkeypress = function(evt) {
if (cancelKeypress)
return false;
}
}
“其他”步骤改编自已删除的答案,该答案改编自another answer,而another answer则改编自{{3}}。
答案 1 :(得分:2)
实际上,您可以通过将event.keyCode
设置为0
来取消IE中的原生帮助:
在IE8&铬
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
var cancelKeypress = false;
// Need to cancel event (only applies to IE)
if ( "onhelp" in window ) {
// (jQuery cannot bind "onhelp" event)
window.onhelp = function () {
return false;
};
}
$(document).keydown(function ( evt ) {
// F1 pressed
if ( evt.keyCode === 112 ) {
if ( window.event ) {
// Write back to IE's event object
window.event.keyCode = 0;
}
cancelKeypress = true;
// Trigger custom help here
alert("My help");
return false;
}
});
// Needed for Opera (as in Andy E's answer)
$(document).keypress(function ( evt ) {
if ( cancelKeypress ) {
cancelKeypress = false; // Only this keypress
return false;
}
});
});
</script>
</head>
<body>
</body>
</html>