我正在使用我的 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);
它正在显示更新的数字,但仍未单击它们。