Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么是';事件';即使未作为参数传递,变量是否仍然可用?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么是';事件';即使未作为参数传递,变量是否仍然可用?

Javascript 为什么是';事件';即使未作为参数传递,变量是否仍然可用?,javascript,jquery,Javascript,Jquery,我想知道为什么以下代码在某些浏览器中工作?也就是说,即使没有click()函数的参数,但是event变量存在,并且对事件触发器对象调用dosomething方法 $(<selector>).click(function () { $(event.target).<dosomething> }); $()。单击(函数(){ $(event.target)。 }); 为什么即使未作为参数传递,“事件”变量也可用 事实并非如此。例如,该代码将在Firefox上失败。但事

我想知道为什么以下代码在某些浏览器中工作?也就是说,即使没有
click()
函数的参数,但是
event
变量存在,并且对事件触发器对象调用
dosomething
方法

$(<selector>).click(function () {
  $(event.target).<dosomething>
});
$()。单击(函数(){
$(event.target)。
});
为什么即使未作为参数传递,“事件”变量也可用

事实并非如此。例如,该代码将在Firefox上失败。但事实并非如此,而且在Firefox上常常失败。Microsoft使用了一个全局
事件
变量。DOM2将其定义为处理程序的参数。Chrome决定抛出MS特定代码,并同时执行这两项操作。很长一段时间以来,Firefox没有这样做。但是出于兼容性的考虑(|),global被标准化为一个遗留API,Firefox在v63中添加了它,并简单地将它放在用户必须启用的标志后面,并且由于v66附带了它,所以它没有任何标签


即使在使用该代码的浏览器上,也要注意
event
将是原始事件对象,而不是jQuery增强的对象。这意味着,例如,在IE8上,您不能调用
event.preventDefault
,因为IE8不提供该功能。如果您接受该参数,jQuery将不会这样做,因为jQuery提供具有标准化功能的事件对象,即使在缺少这些功能的浏览器上也是如此。

global
event
。在控制台中尝试
event
,这并不能解释为什么它只在某些浏览器中工作/versions@SergeyPauk:这是微软主义。@Amadan在chrome中作为well@SergeyPauk:很多MicrosoftSMS都在Chrome中工作。事实上,很多标准来自IE;仅仅是因为微软从来不听任何人的话,开发出他们想要的新东西,让其他人采用它们,或者冒着用户页面无法在少数浏览器中使用的风险,进一步损害了他们的市场份额。谢谢你提供的信息:),我不知道这一点