Greasemonkey Jquery脚本以单击链接
我正试着写我的第一个greasemonkey脚本。我对jquery和javascript相当陌生,所以请对我放松 这是我到目前为止所拥有的Greasemonkey Jquery脚本以单击链接,jquery,greasemonkey,Jquery,Greasemonkey,我正试着写我的第一个greasemonkey脚本。我对jquery和javascript相当陌生,所以请对我放松 这是我到目前为止所拥有的 // ==UserScript== // @name load all page comments // @require http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js // @namespace none // @include
// ==UserScript==
// @name load all page comments
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
// @namespace none
// @include http://www.reddit.com/*
// ==/UserScript==
setInterval( function () {
window.alert("Hello World!");
$("a:contains('load more comments')").click();
}, 10000);
这里的目标是在reddit示例页面上单击所有“加载更多评论”页面,并每10秒循环一次
现在,只有hello world警报弹出,但是链接没有被点击。因此,interval函数可以正常工作,但加载更多注释却不行。不知道从这里到哪里去。“加载更多注释”字符串中的空格是否会破坏它
非常感谢您的帮助。谢谢 您正在尝试模拟单击事件,但这仅适用于jQuery附带的事件。上的事件使用html属性加载reddit上的更多注释链接。即:
onclick="return morechildren(this, 't3_i7hb5', 'c21ko21,c21kesz,c21klil,c21ko45,c21kro5,c21l90v,c21lo38', 3, '')"
要解决您的问题,您需要从该属性中提取值并单独调用它们。请参阅:
Reddit链接触发JavaScript,而不是使用jQuery设置的JS
这意味着在这种情况下,您需要发送一个实际的鼠标事件,如下所示:
setInterval ( function () {
var clickEvent = document.createEvent ("HTMLEvents");
clickEvent.initEvent ("click", true, true);
$("a:contains('load more comments')")[0].dispatchEvent (clickEvent);
}, 10000);
哎呀!我没有看到问题提到点击“加载更多评论”的所有内容。(该页面上有数百个!) 为此,请使用jQuery的
each()
函数
setInterval ( function () {
var moreLinks = $("a:contains('load more comments')");
moreLinks.each ( function () {
var clickEvent = document.createEvent ("HTMLEvents");
clickEvent.initEvent ("click", true, true);
this.dispatchEvent (clickEvent);
} );
}, 10000);
如果在页面上加载了jQuery,则可以使用jQuery执行click事件,因为没有使用jQuery设置click处理程序。“将触发与.bind()或其快捷方式方法之一连接的事件处理程序”谢谢。一次似乎只执行一个“加载更多”链接,这就是[0].dispatchEvent的意思吗?这些Mozilla DOM事件是什么?您可以将它们部分地混合到jQuery中。
[0]
还用于从jNode切换回HTML元素,dispatchEvent()
。。。我不使用Reddit,也没有意识到会有多个这样的链接(该页面目前有155个!!!),或者你想一次点击多个。(但我知道这是在你的问题中。请看我更新的答案……我们并没有将Mozilla事件混合到jQuery中,我们只是使用jQuery来简化节点选择和操作。jQuery旨在简化这些操作。PS.一次单击所有这些链接可能会导致瓶颈、崩溃或Reddit限制(或者可能不会;可能会走运)。如果是,那么请针对该问题提出另一个问题。