我使用impress.js作为插件,我试图在不更改impress.js本身的情况下覆盖键码定义(否则在下次更新期间更改将被覆盖)在插件(impress.js)中覆盖event.keycode而不更改插件中的代码
这是键码的定义如何在impress.js实现:
// KEYBOARD NAVIGATION HANDLERS
// Prevent default keydown action when one of supported key is pressed.
document.addEventListener("keydown", function(event) {
if (event.keyCode === 9 ||
(event.keyCode >= 32 && event.keyCode <= 34) ||
(event.keyCode >= 37 && event.keyCode <= 40)) {
event.preventDefault();
}
}, false);
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) {
return;
}
if (event.keyCode === 9 ||
(event.keyCode >= 32 && event.keyCode <= 34) ||
(event.keyCode >= 37 && event.keyCode <= 40)) {
switch (event.keyCode) {
case 33: // Page up
case 37: // Left
case 38: // Up
api.prev();
break;
case 9: // Tab
case 32: // Space
case 34: // Page down
case 39: // Right
case 40: // Down
api.next();
break;
}
event.preventDefault();
}
}, false);
这是我正在试图改写它们的定义(在一个单独的js文件,但代码在impress.js启动后执行):
- 空格键应该调用暂停
其他键应该没有效果。
//绑定键盘事件.. document.addEventListener( 'KEYUP',函数(事件){
if (event.keyCode === 9 || (event.keyCode >= 32 && event.keyCode <= 34) || (event.keyCode >= 37 && event.keyCode <= 40)) { switch (event.keyCode) { // ..left key arrow, go to previous slide case 37: return deck.prev(); break; // ..right key arrow, go to previous slide case 39: return deck.next(); break; case 32: // Space return deck.pause(); break; case 9: // Tab case 33: // Page up case 38: // Up case 34: // Page down case 40: // Down return; } event.preventDefault(); }
},假);
然而,键的功能没有改变。
可以覆盖密钥,我该如何实现?
感谢您指出这一点!我很好奇,有没有在这个叉子增加移动支持? – TheRed
是的。我删除了阻止在手机上加载的代码。我整合了一个“touch”插件,可以让你滑动下一个/上一个(而上游已经在左/右边缘敲击)。还有一个叫做“mobile”的插件,可以让你隐藏所有的幻灯片,但是当前,上一个和下一个。这个想法是让演示文稿更加轻松。 (这两个实际上都是由他人完成的!) –