GM スクリプトを使用して、多数のページをリンクしています。次のコードだけを含むスクリプトを作成すると: (私は jQuery を使用しています)
$(".rfloat.uiButton").trigger('click');
リスト内のページ数が好きになります。しかし、下部に「See More Results」というボタンがあります。これらは 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');
}
[See More Results] をクリックするとアラートが発生し、新しいページの結果が DOM に追加されます。しかし、クリックトリガーは発火しません。あたかも GM が DOM に適用された変更を見ていないかのようです。
どうしてこれなの?
編集:
するとき
alert($("a.rfloat.uiButton").length);
更新された番号が表示されていますが、まだクリックしていません。