2011-12-20 44 views
2

我克隆現有的通用腳本,理應ignmores用戶在簡單機械論壇,但它似乎沒有工作 -如何改進我的'忽略列表'Greasemonkey腳本?

var smf_url = 'http://www.friendsoftom.com/forum/index.php'; 

var banned = new Array(); 
banned.push(4268); 

for (var i = 0; i < banned.length; i++){ 
    var uid = banned[i]; 
    var url = 'http://friendsoftom.com/forum/index.php?action=profile;u=' + uid; 
    var expression = '//tr[td/table/tbody/tr/td/table/tbody/tr/td/b/a[@href = "' + url + '"]]'; 

    var nodes = document.evaluate(expression, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); 

    for (var j = 0; j < nodes.snapshotLength; j++) { 
     var node = nodes.snapshotItem(j); 
     node.style.display = 'none'; 
    } 
} 

http://userscripts.org/scripts/review/120908

如果要克隆它進行測試,你可以測試此URI -

http://friendsoftom.com/forum/index.php/topic,8484.0.html

任何想法是怎麼回事?

回答

1

首先,腳本假定action=profile將是第一個查詢字符串參數,但事實並非如此。其次,你的整個表達式不會選擇太多有用的東西。這應該讓你開始:

var banned = new Array(); 
banned.push(4268); 

for (var i = 0; i < banned.length; i++) { 
    var uid = banned[i]; 
    var expression = "id('forumposts')/form[1]/" + 
       "div[starts-with(@class, 'windowbg') " + 
       "and descendant::a[contains(@href, 'u=" + uid + "')]]"; 
    var nodes = document.evaluate(expression, document, null, 
      XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); 
    for (var j = 0; j < nodes.snapshotLength; j++) { 
     var node = nodes.snapshotItem(j); 
     node.style.display = 'none'; 
    } 
} 

您可以根據您的具體需求進行優化,但這似乎解決了這個問題。一般來說,我建議一點一點地建立你的表情。在每個新的位置步驟之間寫入控制檯,以便您知道它正在選擇您想要的內容。

+0

這有助於一噸。謝謝lwburk! – cutout 2011-12-20 04:59:06