我遇到触发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方法不同。
答案 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
,理论上,页面可以区分 任何 强烈的>人工制作的事件(虽然我还没有看到它在野外)
如果是这种情况,请链接到目标页面,以便我们可以进行解决方法。