我克隆了一个现有的GM脚本,该脚本据说会在Simple Machines论坛上点击用户,但它似乎不起作用 -
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
知道出了什么问题吗?
答案 0 :(得分: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';
}
}
您可以根据您的具体需求进行优化,但这似乎可以解决问题。一般来说,我建议你一点一点地建立你的表达。在每个新位置步骤之间写入控制台,以便您知道它正在选择您想要的内容。