jQuery click()无法在Greasemonkey / Tampermonkey脚本中使用

时间:2012-05-03 00:07:34

标签: jquery greasemonkey tampermonkey

我遇到触发jQuery点击Greasemonkey / Tampermonkey的问题......

jQuery('button').each(function() {
    jQuery(this).css('background', 'red');
    jQuery(this).click();
    location.assign("javascript:jQuery(this).click();void(0)");
}​

正如你所看到的,我甚至尝试了location.assign hack,但没有任何方法可行,控制台也没有错误。

有趣的是,是的,背景颜色确实变为红色,所以我假设.click()的工作方式与其他jQuery方法不同。

1 个答案:

答案 0 :(得分:7)

jQuery的.click()只是jQuery的.trigger()以及Docs的快捷方式:

  

当相应的事件发生时,会触发附加.bind()或其快捷方法之一的任何事件处理程序。但是,可以使用.trigger()方法手动触发它们。

这意味着事件处理程序(不是由jQuery设置)不能始终由.click()(或.trigger())触发。

要解决此问题,请发送实际鼠标事件:

jQuery ('button').each ( function () {
    jQuery (this).css ('background', 'red');

    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    this.dispatchEvent (clickEvent);
}




请注意,在极少数情况下,页面实际上会处理一系列事件,而不是click,理论上,页面可以区分 任何 人工制作的事件(虽然我还没有看到它在野外) 如果是这种情况,请链接到目标页面,以便我们可以进行解决方法。