小编典典

如何找出触发了哪些JavaScript事件?

javascript

我有一个选择列表:

<select id="filter">
  <option value="Open" selected="selected">Open</option>
  <option value="Closed">Closed</option>
</select>

当我选择Closed页面时会重新加载。在这种情况下,它显示关闭的票证(而不是打开的票证)。当我手动执行时,效果很好。

问题是当我Closed使用Watir选择时页面不会重新加载:

browser.select_list(:id => "filter").select "Closed"

这通常意味着某些JavaScript事件不会触发。我可以使用Watir触发事件:

browser.select_list(:id => "filter").fire_event "onclick"

但我需要知道要触发哪个事件。

有没有办法找出为元素定义了哪些事件?


阅读 1007

收藏
2020-05-01

共2个答案

小编典典

看起来Firebug(Firefox附加组件)具有答案:

  • open Firebug
  • right click the element in HTML tab
  • click Log Events
  • enable Console tab
  • click Persist in Console tab (otherwise Console tab will clear after the page is reloaded)
  • select Closed (manually)
  • there will be something like this in Console tab:
...
mousemove clientX=1097, clientY=292
popupshowing
mousedown clientX=1097, clientY=292
focus
mouseup clientX=1097, clientY=292
click clientX=1097, clientY=292
mousemove clientX=1096, clientY=293
...

2020-05-01
小编典典

要补充一点,你也可以在Chrome中执行此操作:

Ctrl+ Shift+ I(开发人员工具)>源>事件侦听器断点(在右侧)。

你还可以通过右键单击元素,然后浏览其属性(右侧面板)来查看所有已附加的事件。

例如:

  • 右键单击左侧的upvote按钮
  • 选择检查元素
  • 收起样式部分(最右边的部分-双V形)
  • 展开事件监听器选项
  • 现在你可以看到绑定到事件的事件

不知道它是否与firebug选项一样强大,但是对于我的大多数东西来说已经足够了。

2020-05-02