你可以在这里看到我的项目 -
http://www.inluxphoto.com/custom/jsgallery/index.php
我试图让左右箭头键移动幻灯片。我可以按照jqueryfordesigners.com首页上的说明完成所有浏览器的工作(对不起,我只允许一个链接)。
但是,在动画完成之前,必须将键盘解除绑定,因此用户无法快速双击键,这会破坏节目。这使我得到了以下功能 -
function keyCommands() {
//Bind Keys according to keyAssignments
function keyCommandBind() {
$(document.documentElement).bind('keyup', keyAssignments)
}
//Bind functions to specific keys
function keyAssignments() {
if (event.keyCode == 37) {
leftArrow();
}
if (event.keyCode == 39) {
rightArrow();
}
if (event.keyCode == 32) {
spaceBar();
}
}
function leftArrow() {
//unbind, do stuff, rebind
}
function rightArrow() {
//unbind, do stuff, rebind
}
function spaceBar() {
//unbind, do stuff, rebind
}
keyCommandBind();
}
这适用于所有浏览器,除了Firefox&卡米诺。 Firebug告诉我event
(即event.keyCode
)未定义。这是真的,它没有定义,我理解。但是,我不明白为什么,如果它没有定义,它是否适用于所有其他浏览器。
我该如何恰当地定义这个?或者,我做错了吗?
非常感谢任何帮助,谢谢你的时间!
答案 0 :(得分:2)
尝试将keyAssignments声明为function keyAssignments(event) {
。我不确定为什么它会在某些部分而不是其他部分工作,也许它们有一个保留变量,默认情况下会出现与keyup事件一起冒泡?
答案 1 :(得分:0)
因此,当我们在这里进行按键监听时,这是我们使用的一些代码:
$('.selector').keypress(function(e) {
var key = e.which || e.keyCode || e.keyChar;
//etc.
)};
基本上有些浏览器称之为不同的东西。