我有一个keyup的监听器,如果按下转义键,它将卸载我的javascript幻灯片。
window.addEventListener("keyup", this.escapekeyfn, false);
但是,在幻灯片放映中是使用window.print()
打印图像的选项 - 但是如果用户在该对话框中按下转义符,则会将其传递给我的监听器并退出幻灯片。
任何方法可以在纯粹的js中阻止这种情况?我试图找到任何可以帮助我确定逃生来源的事件属性。 originalTarget
看起来很有希望,但是一旦调用了一个对话框,原始目标就会更改为BODY。
听众
转义键处理(此基本代码)
slideshow.prototype.initslideshow = function(){
_this = this
....
this.escapekeyfn = function(e){ _this.escapekeycheck(e, _this)};
window.addEventListener("keyup", this.escapekeyfn, false);
....
}
打印按钮:
slideshow.prototype.printlink = function(){
var _this = this;
var a = document.createElement("a");
var img = document.createElement("img");
a.onclick = function(e){e.stopPropagation();window.print();return false};
....
}
slideshow.prototype.escapekeycheck = function(e, _this){
if (e.stopPropagation) e.stopPropagation();
if (e.keyCode == 27){
_this.ssclose(e);
}
}
关闭功能:
slideshow.prototype.ssclose = function(e) {
if (e.stopPropagation) e.stopPropagation();
// stop listening for escape key
window.removeEventListener("keyup", this.escapekeyfn);
return false;
}
答案 0 :(得分:0)
我终于遇到了解决这个问题的方法。我将keyup
更改为keypress
window.addEventListener("keypress", keypressFn, false);
出于某种原因,keypress
事件未发送到window
对象,而keyup
事件是打印对话框打开时。