2013-04-22 46 views
-1

我正在使用我的GM腳本來鏈接多個頁面。如果我創建一個只包含以下代碼的腳本:(我使用jQuery的BTW)Greasemonkey沒有看到在Facebook上對DOM做出的更改

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

它會喜歡的列表中的頁面數。但底部有一個按鈕,顯示「查看更多結果」。這些正由Ajax加載。所以,我更新了我的腳本來監聽元素被attatched到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。但點擊觸發器不會觸發。就好像通用汽車沒有看到已經應用到DOM的變化。

這是爲什麼?

編輯:

在做

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

它顯示的更新數量,但仍然沒有點擊它們。

回答

0

什麼是錯誤控制檯(按Ctrl Ĵ)說什麼?

到目前爲止,我沒有看到任何匹配$("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');會重新查看早期的鏈接。這可能導致問題。

相關問題