-1

我正在使用我的 GM 脚本链接多个页面。如果我创建一个只包含以下代码的脚本:(我正在使用 jQuery btw)

$(".rfloat.uiButton").trigger('click');

它会喜欢列表中的页数。但是底部有一个按钮,上面写着“查看更多结果”。这些是由 Ajax 加载的。因此,我更新了我的脚本以监听附加到 DOM 的元素,如下所示:

$("#pagelet_search_results_objects").bind("DOMSubtreeModified",HandleDOM_ChangeWithDelay);

var zGbl_DOM_ChangeTimer = null;

function HandleDOM_ChangeWithDelay (zEvent) {
    if (typeof zGbl_DOM_ChangeTimer == "number") {
        clearTimeout (zGbl_DOM_ChangeTimer);
        zGbl_DOM_ChangeTimer = '';
    }
    zGbl_DOM_ChangeTimer = setTimeout (HandleDOM_Change, 333);
}

function HandleDOM_Change () {
    alert("New content loaded"); // This fires once
    $("a.rfloat.uiButton").trigger('click');
}

单击“查看更多结果”并将新页面结果添加到 DOM 后会触发警报。但是点击触发器不会触发。就好像 GM 没有看到已应用于 DOM 的更改。

为什么是这样?

编辑:

做的时候

alert($("a.rfloat.uiButton").length);

它正在显示更新的数字,但仍未单击它们。

4

1 回答 1

0

错误控制台 ( CtrlShiftJ) 说什么?

到目前为止,我没有看到任何匹配的 Facebook 页面$("a.rfloat.uiButton")。链接到一个。

FB 很可能对添加的链接使用不同的事件处理,而jQuery.trigger()仅对一小部分事件进行操作。

尝试:

jQuery ('a.rfloat.uiButton').each ( function () {
    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    this.dispatchEvent (clickEvent);
}

也有可能新链接甚至不会触发点击。请参阅“在 AJAX 驱动的站点上选择和激活正确的控件”


运行$("a.rfloat.uiButton").trigger('click');不止一次会重新点击之前的链接。这可能会导致问题。

于 2013-04-23T02:22:25.243 回答