我使用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」的插件,可以讓你隱藏所有的幻燈片,但是當前,上一個和下一個。這個想法是讓演示文稿更加輕鬆。 (這兩個實際上都是由他人完成的!) –