Javascript:模拟链接上的点击

5 javascript yui

我有一个附加了侦听器的链接(我正在使用YUI):

YAHOO.util.Event.on(Element, 'click', function(){ /* some functionality */});
Run Code Online (Sandbox Code Playgroud)

我希望在不涉及用户单击的另一个场景中发生相同的功能.理想情况下,我可以模拟元素上的"点击"并自动触发功能.我怎么能这样做?太糟糕了,这不起作用:

$('Element').click()
Run Code Online (Sandbox Code Playgroud)

谢谢.

Eli*_*rey 10

MDC有一个使用dispatchEvent模拟点击事件的好例子.

下面是一些模拟元素点击的代码,该元素还会检查是否取消了事件:

function simulateClick(elm) {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var canceled = !elm.dispatchEvent(evt);
  if(canceled) {
    // A handler called preventDefault
    // uh-oh, did some XSS hack your site?
  } else {
    // None of the handlers called preventDefault
    // do stuff
  }
}
Run Code Online (Sandbox Code Playgroud)


Cre*_*esh 9

您正在寻找fireEvent(IE)和dispatchEvent(其他).

对于YUI 3来说,这一切都很好地包含在Y.Event.simulate():

YUI().use("node", function(Y) {
    Y.Event.simulate(document.body, "click", { shiftKey: true })
})
Run Code Online (Sandbox Code Playgroud)


Ily*_*man 3

您可以单独声明您的函数。

function DoThisOnClick () {
}
Run Code Online (Sandbox Code Playgroud)

然后像现在一样将其分配给 onclick 事件,例如:

YAHOO.util.Event.on(Element, 'click', DoThisOnClick)
Run Code Online (Sandbox Code Playgroud)

您可以随时调用它:-)

DoThisOnClick ()
Run Code Online (Sandbox Code Playgroud)