使用 Shadowbox 会禁用键盘快捷键吗?
-
09-06-2019 - |
解决方案
最好的选择是通过将“enableKeys”选项设置为 false 来禁用 Shadowbox 中的键盘导航快捷方式(请参阅 这一页).
或者,您可以按照 Robby 的建议进行操作并修改 Shadowbox.js 文件, 但仅当您需要 Shadowbox 键盘导航时才执行此操作. 。我认为您想要搜索此代码块并对其进行修改,以便仅在使用快捷方式之一时取消默认事件(我添加了一些换行符和缩进):
var handleKey=function(e){
var code=SL.keyCode(e);
SL.preventDefault(e);
if(code==81||code==88||code==27){
SB.close()
}else{
if(code==37){
SB.previous()
}else{
if(code==39){
SB.next()
}else{
if(code==32){
SB[(typeof slide_timer=="number"?"pause":"play")]()
}
}
}
}
};
我认为你可以将其更改为看起来更像这样:
var handleKey=function(e){
switch(SL.keyCode(e)) {
case 81:
case 88:
case 27:
SB.close()
SL.preventDefault(e);
break;
case 37:
SB.previous()
SL.preventDefault(e);
break;
case 39:
SB.next()
SL.preventDefault(e);
break;
case 32:
SB[(typeof slide_timer=="number"?"pause":"play")]()
SL.preventDefault(e);
break;
}
};
这应该可以防止 Shadowbox 事件处理程序吞噬任何它不关心的击键。
其他提示
这个问题是由某些 JavaScript 吃掉键盘事件引起的。例如,您可以按转义键,该键被 .js 文件之一捕获并导致阴影框关闭。
您的选择是破解文件并找到问题,或者不使用 Shadowbox。祝你好运!
解决方案是将enableKeys选项设置为false。然而,这似乎不适用于内联 HTML 的 open() 调用。但是,如果您在 init() 调用中设置它,它确实可以工作。
不隶属于 StackOverflow