Javascript 覆盖插件(impress.js)中的event.keycode,而不更改插件中的代码
我使用impress.js作为插件,并试图在不改变impress.js本身的情况下覆盖keycode定义(否则在下一次更新期间,更改将被覆盖) 以下是在impress.js中实现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
// 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.keyCodeaddEventListener
不会覆盖以前添加的事件侦听器,这是其优于使用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" ... >