我想在按F1时显示用户选择的帮助文件。这应该适用于我测试我的应用程序的每个浏览器。如何停止显示默认帮助文件?Internet Explorer或任何浏览器F1按键显示您自己的帮助
10
A
回答
15
AFAIK,F1键的默认动作可以在除IE以外的任何浏览器中更改。微软的团队通常都是坚持在整个应用程序中保持一致的用户体验,这就是为什么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。
+1
哦不,他们试图防止损害正常的用户体验(这不是一件坏事,恕我直言),但他们提供了另一个(更简单)的功能,能够做到这一点? – 2010-08-04 12:32:25
+0
@Marcel:我说错了。有意提供* onhelp *事件来替换默认帮助,但也有意不让F1键被取消。奇怪,我知道。 – 2010-08-04 12:35:54
2
其实,你可以取消IE浏览器的原生帮助,通过设置event.keyCode
到0
:
在IE8 &测试Chrome的
<!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>
相关问题
- 1. 如何编写在浏览器中显示的C#Visual Studio F1帮助?
- 2. 多个Internet Explorer浏览器
- 3. UFT检测2个Internet Explorer浏览器,但只有1显示
- 4. 在Internet Explorer中的浏览器模式
- 5. 在按下F1时显示visual studio 2010里面的帮助
- 6. 在FF和Internet Explorer中,Chrome浏览器中的Chrome浏览器
- 7. Internet Explorer扩展名(浏览器帮助对象)DLL注册错误
- 8. 多个Internet Explorer版本浏览器测试(Internet Explorer 6-8)?
- 9. 需要使用Internet Explorer 9的显示问题帮助
- 10. 如何在Internet Explorer或.NET浏览器控件中阻止iframe
- 11. 关于如何开始构建您自己的浏览器的任何文章?
- 12. 铬和Internet Explorer中的javascript数组....任何帮助!
- 13. 构建您自己的HTML元素的任何交叉浏览器问题?
- 14. 谷歌浏览器帮助
- 15. 帮助浏览器测试
- 16. Watin C#:如何隐藏“Internet Explorer不是您的默认浏览器”
- 17. Internet Explorer浏览器问题,同时点击shift +鼠标左键单击,文本自动突出显示
- 18. Internet Explorer中的Javascript/Ajax错误帮助
- 19. @ font-face在Internet Explorer上不显示它在谷歌浏览器中的工作
- 20. 垂直文本显示在除Internet Explorer之外的所有浏览器中
- 21. 屏幕在Internet Explorer浏览器中自动向左滚动
- 22. 测试当前的浏览器是否为任何版本的Internet Explorer
- 23. Internet Explorer 8的图像浏览问题
- 24. 使用IWebBrowser2禁用“Internet Explorer目前不是您的默认浏览器”警告
- 25. 浏览器不显示任何数据或错误
- 26. php帮助,如何显示我的“自己”订单或提交订单
- 27. 如何在Internet Explorer中显示我自己的上下文菜单
- 28. 如何使用浏览器显示在apk中提供的帮助
- 29. 浏览器扩展和浏览器帮助对象有什么区别
- 30. Internet Explorer中显示7/8/9显示日期时如何禁用Internet Explorer中
“这应该对每一个浏览器在那里我测试我的应用程序。” →哪些? – 2010-08-04 12:23:26
我应该打开的帮助文件应该适用于像Mozila,IE等其他浏览器。如果我在任何浏览器上按F1,不应该显示默认的帮助文件 – Dotnet 2010-08-04 12:27:45
我假设存在一个问题...但我似乎无法找到一个。 – Stephen 2010-08-04 12:28:29