我正在使用我的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);
它显示更新后的号码,但仍然没有点击它们。
答案 0 :(得分:0)
什么是错误控制台( Ctrl Shift J )说什么?
到目前为止,我没有看到任何匹配$("a.rfloat.uiButton")
的Facebook页面。链接到一个。
FB很可能对添加的链接使用不同的事件处理,jQuery's .trigger()
only operates on a small-subset of events.
尝试:
jQuery ('a.rfloat.uiButton').each ( function () {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
this.dispatchEvent (clickEvent);
}
新链接甚至可能无法点击。请参阅"Choosing and activating the right controls on an AJAX-driven site"。
多次运行$("a.rfloat.uiButton").trigger('click');
会重新点击之前的链接。此可能会导致问题。