为什么窗口不触发触摸设备的点击事件

时间:2018-01-24 16:48:07

标签: javascript dom

我有demo link我要为窗口添加click事件。它适用于桌面,但不适用于移动设备。

基本上我在最新的Chrome和Safari上运行测试,

  $('#button1').click(function(){
     $('#text').append('<div> jquery click</div>')
     // this would get executed on both desktop and mobile
  })
    window.addEventListener('click', function() {
     $('#text').append('<div> native click on window</div>')
     // this only gets executed on desktop
  })

所以我的问题是,为什么click事件在移动设备上不会触发?

2 个答案:

答案 0 :(得分:0)

MDN表明,对于Safari,如果某个元素不被视为“可点击”,则不会触发点击事件。我认为window不被视为“可点击”,因此window不会触发“点击”事件(除了由其他可点击元素传播的事件)。

还有一个Safari link来解释这一点。

虽然我在Chrome上找不到任何内容,但我会假设它采用相同的想法。

答案 1 :(得分:0)

显然Safari并不认为该窗口是可点击的事件。

正如ydydyd所指出的那样,Safari docs会有更详细的解释。

要解决此问题,只需将window.addEventListener()替换为document.addEventListener()

即可