为什么触发F11按键事件不起作用?

时间:2011-06-21 15:50:20

标签: javascript jquery javascript-events keyevent

我刚读过这个问题:Full Screen Page by pressing button instead of F11
操作要求用其他热键替换 F11 ,所以我想知道我可以模拟按 F11 来使事情有效。
我了解到我可以在JQuery中使用触发器来模拟按键事件,所以我做了类似这样的事情:

$("body").keyup(function (e) {
    alert(e.which);
});
var e = $.Event("keyup");
e.which = 122; // # Key code of F11
$("body").trigger(e);  

当我运行这个时,我得到警告说122,但它似乎没有给出希望的结果。那里有限制吗?

我在这里做了一个小提琴:http://jsfiddle.net/ap295/5/

4 个答案:

答案 0 :(得分:10)

我认为这是一个:)来检测它......

$(document).keyup(function(e){
   if(e.which==122){
       e.preventDefault();//kill anything that browser may have assigned to it by default
       //do what ever you wish here :) 
       alert('F11 pressed');
       return false;
   }
});

但触发它( NOT POSSIBLE

但你不会阻止浏览器全屏:) ... Reson给出的是,让我说我已经以某种方式完全筛选了它,并希望使用 F11 来切换它,但是你正在阻止我,我将不得不重新启动PC,[计算机文盲]这会带来安全性风险,因为你阻止用户做他期望做的事情,他们可能认为PC坏了或者什么东西:)所以......你在那里。

答案 1 :(得分:10)

你不能这样做。该问题中的链接答案为jQuery提供了一种在jQuery事件框架内模拟按键的方法。

你根本无法触发或伪造按键。所以这个问题的答案是:

不,这是不可能的

答案 2 :(得分:3)

您将无法在网页中覆盖浏览器的内置热键。

可能能够在浏览器扩展程序中执行此操作,但这肯定会严重过度,只是为了更改应用程序的热键。

在任何情况下,为什么你甚至想要覆盖标准键盘快捷键?我不明白。它们已经成为标准很长一段时间了;大多数用户都会熟悉它们,并且如果它们被改为别的东西,就会觉得很奇怪。

答案 3 :(得分:1)

不要看“是如何触发F11?”的问题 - 看看是“如何触发或模拟全屏?”

使用旧版本的IE,您可以直接打开全新窗口:

window.open(someURLorOther, '', 'fullscreen=yes, scrollbars=auto');

或者您可以使用window.open打开特定尺寸的新窗口。

或者您可以尝试调整当前窗口的大小以填充屏幕:

moveTo(0,0);
resizeTo(screen.availWidth,screen.availHeight);

然而只是因为你可以并不意味着 永远不会调整当前窗口的大小 - 这几乎让所有人都感到恼火。打开一个你选择的大小的新窗口是更合理的,但如果它太大可能会令人烦恼,并且在正常的网页上(“正常”我可能意味着不是某种基于浏览器的数据输入应用程序)不打开新窗户会更好。