我有一个被解雇的事件。我想改变这个事件的行为。
$('window').on('resize', function (ev) {
ev.preventDefault(); // this needs to be "deferred"
Game.pause();
someAsyncPromise().then(result => {
Game.resume();
// continue the default action here
});
})
是否可以用这种方式推迟使用javascript的事件的默认操作?
答案 0 :(得分:2)
是否可以用这种方式推迟使用javascript的事件的默认操作?
不,一旦所有事件处理程序都返回并且事件已完成路由,浏览器将处理触发默认操作,除非它已被阻止。您无法暂停事件(当然,除了在处理程序中运行同步代码之外),或重新发出默认操作。
当您希望默认发生时尝试再次发起事件很有诱惑力,但即使在可能的情况下也会出现问题(重新触发事件处理程序,许多事件都可以只能由用户等发起,并且我认为无论如何都不可能。
旁注:由于LGSon pointed out,that particular event没有任何默认操作,因此无需担心会阻止它,也无需尝试重新启动稍后再开始吧但问题仍然适用于一般情况。