今天我偶然发现了一个奇怪的行为。基本上,我有一个绑定到knockout.js点击事件的函数。该函数正在利用淘汰赛事件,但没有明确地将其作为论据。
this.myClickHandler = function(){
console.log(event); //event gets logged in Chrome/IE11, not Firefox
}
对我来说这看起来很奇怪,但在Chrome中它按预期工作。它在IE11中也能正常工作。但是在Firefox中,它没有运行。一旦我明确地在所有浏览器中都有效。这就是我期望它完全可以工作所需要的。
this.myClickHandler = function(model, event){ //event is second parameter passed from knockout click event
console.log(event); //event gets logged in all browsers
}
我玩了一个游戏并用jQuery重现了这个
function func(){
alert(event);
}
function runFunc(callback){
callback();
}
$(document).ready(function(){
runFunc(func);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
这是怎么回事?为什么我可以访问名为&#39; event&#39;在某些浏览器中,但在其他浏这是预期的行为吗?
答案 0 :(得分:3)
从IE的旧版本开始,事件对象未传递给处理程序方法,而是在全局上下文中设置。
为了向后兼容,IE仍支持此模型,并且chrome还添加了对此功能的支持。但FF并不支持它。