Greasemonkey Jquery脚本以单击链接

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

我正试着写我的第一个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        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限制(或者可能不会;可能会走运)。如果是,那么请针对该问题提出另一个问题。