Javascript 覆盖插件(impress.js)中的event.keycode,而不更改插件中的代码

Javascript 覆盖插件(impress.js)中的event.keycode,而不更改插件中的代码,javascript,overwrite,keycode,Javascript,Overwrite,Keycode,我使用impress.js作为插件,并试图在不改变impress.js本身的情况下覆盖keycode定义(否则在下一次更新期间,更改将被覆盖) 以下是在impress.js中实现keycode定义的方式: // KEYBOARD NAVIGATION HANDLERS // Prevent default keydown action when one of supported key is pressed. document.addEventListener( "ke

我使用impress.js作为插件,并试图在不改变impress.js本身的情况下覆盖keycode定义(否则在下一次更新期间,更改将被覆盖)

以下是在impress.js中实现keycode定义的方式:

    // 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 );
//键盘导航处理程序
//当按下其中一个受支持的键时,防止默认的向下键操作。
文档.添加的事件列表器(“键控”,函数(事件){
如果(event.keyCode===9||

(event.keyCode>=32&&event.keyCode=37&&event.keyCode=37&&event.keyCode=32&&event.keyCode=37&&event.keyCode
addEventListener
不会覆盖以前添加的事件侦听器,这是其优于使用on*事件属性/属性的优点之一

为了做你想做的事情,你需要添加你自己的
impress:init
事件监听器,在impress添加的监听器之前,执行与库相同的设置,更改需要更改的内容,然后调用

stopImmediatePropagation
将阻止执行任何其他相同类型的侦听器,这意味着不会触发impress的
impress:init
事件侦听器

//code executed before impress.js is loaded
(function(document,window){
  "use strict";
   var throttle = function( fn, delay ) {
     var timer = null;
     return function() {
       var context = this, args = arguments;
       clearTimeout( timer );
       timer = setTimeout( function() {
         fn.apply( context, args );
       }, delay );
     };
  };

  document.addEventListener( "impress:init", function( event ) {
    event.stopImmediatePropagation();

    //parts of init code

    document.addEventListener('keyup', function(event) {
      if (event.keyCode === 9 || (event.keyCode >= 32 && event.keyCode <= 34) || (event.keyCode >= 37 && event.keyCode <= 40)) {
        switch (event.keyCode) {
          case 37:
            return deck.prev();
            break;
          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();
      }
    }, false);

    //other part of init code
  });

})(document, window)
//加载impress.js之前执行的代码
(功能(文档、窗口){
“严格使用”;
var油门=功能(fn,延迟){
var定时器=null;
返回函数(){
var context=this,args=arguments;
清除超时(计时器);
计时器=设置超时(函数(){
fn.应用(上下文,args);
},延误);
};
};
document.addEventListener(“impress:init”,函数(事件){
事件。stopImmediatePropagation();
//初始化代码的部分
document.addEventListener('keyup',函数(事件){
如果(event.keyCode===9 | |(event.keyCode>=32&&event.keyCode=37&&event.keyCode=37&&event.keyCode=32&&event.keyCode=37&&event.keyCode window.innerWidth-width){
结果=api.next();
}
如果(结果){
event.preventDefault();
}
}
},假);
addEventListener(“调整大小”),节流阀(函数(){
api.goto(document.querySelector(“.step.active”)、500;
},250),虚假);
},假);
})(文件,窗口);
你不是厌倦了所有这些基于幻灯片的演示吗?
你不认为在现代浏览器中提供的演示文稿不应该复制“经典”幻灯片组的限制吗?
你想通过演讲的惊人的可视化给听众留下深刻印象吗?
那你应该试试
impress.js*
*不押韵
它是一种演示工具
灵感来自于背后的想法
基于现代浏览器中CSS3转换和转换的强大功能

想象你的伟大思想

还有一些小点子

通过在无限画布上定位、旋转和缩放它们

唯一的限制是你的想象力

想知道更多吗

卢克! 还有一件事

你注意到它是3D的吗

*算了,普雷齐;)
impress().init();
addEventListener
不会覆盖以前添加的事件侦听器,这是其优于使用on*事件属性/属性的优点之一

为了做你想做的事情,你需要添加你自己的
impress:init
事件监听器,在impress添加的监听器之前,执行与库相同的设置,更改需要更改的内容,然后调用

stopImmediatePropagation
将阻止执行任何其他相同类型的侦听器,这意味着不会触发impress的
impress:init
事件侦听器

//code executed before impress.js is loaded
(function(document,window){
  "use strict";
   var throttle = function( fn, delay ) {
     var timer = null;
     return function() {
       var context = this, args = arguments;
       clearTimeout( timer );
       timer = setTimeout( function() {
         fn.apply( context, args );
       }, delay );
     };
  };

  document.addEventListener( "impress:init", function( event ) {
    event.stopImmediatePropagation();

    //parts of init code

    document.addEventListener('keyup', function(event) {
      if (event.keyCode === 9 || (event.keyCode >= 32 && event.keyCode <= 34) || (event.keyCode >= 37 && event.keyCode <= 40)) {
        switch (event.keyCode) {
          case 37:
            return deck.prev();
            break;
          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();
      }
    }, false);

    //other part of init code
  });

})(document, window)
//加载impress.js之前执行的代码
(功能(文档、窗口){
“严格使用”;
var油门=功能(fn,延迟){
var定时器=null;
返回函数(){
var context=this,args=arguments;
清除超时(计时器);
计时器=设置超时(函数(){
fn.应用(上下文,args);
},延误);
};
};
document.addEventListener(“impress:init”,函数(事件){
事件。stopImmediatePropagation();
//初始化代码的部分
document.addEventListener('keyup',函数(事件){
如果(event.keyCode===9 | |(event.keyCode>=32&&event.keyCode=37&&event.keyCode=37&&event.keyCode=32&&event.keyCode=37&&event.keyCode window.innerWidth-width){
结果=api.next();
}
如果(结果){
event.preventDefault();
}
}
},假);
addEventListener(“调整大小”),节流阀(函数(){
api.goto(document.querySelector(“.step.active”)、500;
},250),虚假);
},假);
})(文件,窗口);
你不是厌倦了所有这些基于幻灯片的演示吗?
你不认为在现代浏览器中提供的演示文稿不应该复制“经典”幻灯片组的限制吗?
你想通过演讲的惊人的可视化给听众留下深刻印象吗?
那你应该试试
impress.js*
*不押韵
它是一种演示工具
灵感来自于背后的想法
<div id="impress" data-navigation="off" ... >