【发布时间】:2010-12-08 05:58:48
【问题描述】:
由于 IE 的默认行为是在 Alt-Enter 命令上切换到全屏模式。我必须避免这种情况,并且必须附加自定义行为。
可行吗?
【问题讨论】:
标签: javascript internet-explorer javascript-events
由于 IE 的默认行为是在 Alt-Enter 命令上切换到全屏模式。我必须避免这种情况,并且必须附加自定义行为。
可行吗?
【问题讨论】:
标签: javascript internet-explorer javascript-events
不是在 JavaScript 中,不是。
这是应用程序的一种行为,您无法真正控制它(浏览器扩展等除外)。
您可以尝试捕捉页面上的按键,但这不会阻止用户轻松绕过它。
有关键的字符代码列表,请参阅http://www.webonweboff.com/tips/js/event_key_codes.aspx。我很确定捕捉按键组合并不可靠。
此外,IE 中的 Alt+Enter 会导致预期的行为,您不应尝试通过网页覆盖它。
【讨论】:
return false 以阻止默认操作。很有可能,IE 对该组合键的处理将优先于页面想要执行的任何操作。
既然你不能打败他们,那就加入他们吧。意思是,既然您可以捕获事件但无法停止它,那么您在用户按下 alt+enter 后超时运行相同的命令怎么样?
例子:
<script type="text/javascript">
document.onkeydown = handleHotKeys;
function handleHotKeys(e) {
var keynum = getKeyCode(e);
var e = e || window.event;
if (keynum==13 && e.altKey) { // handle enter+alt
setTimeout("toggleFullscreenMode",100);
}
}
function getKeyCode(e){
if (!e) { // IE
e=window.event;
return e.keyCode;
} else { // Netscape/Firefox/Opera
return e.which;
}
}
function toggleFullscreenMode() {
var obj = new ActiveXObject("Wscript.shell");
obj.SendKeys("{F11}");
}
</script>
免责声明:在 IE8 中测试。您必须查看浏览器和版本才能使其适用于您所针对的特定版本的浏览器。这也假设用户将启用 javascript 和 activex 对象。
【讨论】: