|
阅读:7647回复:29
如何屏蔽卡饭论坛某个ID的帖子「主贴+跟贴」
如何屏蔽卡饭论坛某个ID的帖子「主贴+跟贴」求方法
|
|
|
1楼#
发布于:2015-07-03 20:52
難道是因為在卡飯推“如何屏蔽卡飯論壇”的帖子被刪了?
|
|
|
|
2楼#
发布于:2015-07-03 20:54
kafan其实没什么必要去 我感觉
|
|
|
3楼#
发布于:2015-07-03 21:17
用 xpath 选择
rip yarip 或者用 privoxy 等处理页面然后 css 隐藏 |
|
|
|
4楼#
发布于:2015-07-03 21:32
写个 user script?
把跟 ID 有关的贴子全部移除掉。 |
|
|
|
5楼#
发布于:2015-07-03 21:34
是的 全部移除掉 @kalxd
|
|
|
6楼#
发布于:2015-07-03 23:46
已删
|
|
|
7楼#
发布于:2015-07-03 23:51
已删
|
|
|
8楼#
发布于:2015-07-04 04:38
这。。。怎么讨论这么严肃的问题了
|
|
|
9楼#
发布于:2015-07-04 09:15
|
|
|
|
10楼#
发布于:2015-07-04 10:51
|
|
|
|
11楼#
发布于:2015-07-04 11:03
|
|
|
|
12楼#
发布于:2015-07-04 11:42
鉴于某些 id 的发言
还是有必要给本论坛撸个油猴脚本的 代码中以版主 fang5566 和我为例 请自行修改需要屏蔽的 uid // ==UserScript==
// @name yan er dao ling@firefox.net.cn
// @namespace firefox.net.cn
// @match https://www.firefox.net.cn/*
// @version 1
// @license GPLv3+
// @grant none
// ==/UserScript==
(function(){
let blocklist = [
3719, // fang5566
23968, // aaaa007cn
];
// https://developer.mozilla.org/docs/Using_XPath
function docEvaluateArray (expr, doc, context, resolver) {
var i, result, a = [];
doc = doc || (context ? context.ownerDocument : document);
resolver = resolver || null;
context = context || doc;
result = doc.evaluate(expr, context, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for(i = 0; i < result.snapshotLength; i++) {
a[i] = result.snapshotItem(i);
}
return a;
}
let removeNode = node => {
if (node)
node.parentNode.removeChild(node);
}
let removeNodes = nodes => {
for (let n of nodes)
removeNode(n);
}
let hideThreadByUID = uid => {
let threads = docEvaluateArray(`//div[@class="thread_posts_list"]/table[@id="J_posts_list"]//td[@class="author"]/a[@data-uid="${uid}"]/../..`);
removeNodes(threads);
}
let hidePostByUID = uid => {
let posts = docEvaluateArray(`//div[@id="J_posts_list"]//table[@class="floor_table"][tbody/tr/td[@class="floor_left"]//div[@class="name"]/a[@data-uid="${uid}"]]`);
for (let p of posts) {
removeNode(p.querySelector('div.face'));
removeNode(p.querySelector('div.signature'));
let content = p.querySelector('div.editor_content');
content.parentNode.appendChild(document.createTextNode('*** \u4F5C\u8005\u7684\u4E00\u5207\u4E0D\u5B58\u5728\u4E8E\u4F60\u7684\u548C\u8C10\u4E16\u754C ***'));
removeNode(content);
}
}
let blockbyuid = () => {
document.removeEventListener("DOMContentLoaded", blockbyuid);
for (let uid of blocklist) {
hideThreadByUID(uid);
hidePostByUID(uid);
}
};
document.addEventListener("DOMContentLoaded", blockbyuid);
}()) |
|
|
|
13楼#
发布于:2015-07-04 12:19
12楼#的脚本很好啊 ,能弄个卡饭的不
|
|
|
14楼#
发布于:2015-07-04 12:22
再改改就是卡饭了
代码中以 @pcxfirefox 为例 http://bbs.kafan.cn/forum-248-1.html 请自行修改 id 列表 // ==UserScript==
// @name yan er dao ling@bbs.kafan.cn
// @namespace bbs.kafan.cn
// @match http://bbs.kafan.cn/*
// @version 1
// @license GPLv3+
// @grant none
// ==/UserScript==
(function(){
let blocklist = [
'pcxfirefox',
];
// https://developer.mozilla.org/docs/Using_XPath
function docEvaluateArray (expr, doc, context, resolver) {
var i, result, a = [];
doc = doc || (context ? context.ownerDocument : document);
resolver = resolver || null;
context = context || doc;
result = doc.evaluate(expr, context, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for(i = 0; i < result.snapshotLength; i++) {
a<span style="font-style: italic;"> = result.snapshotItem(i);
}
return a;
}
let removeNode = node => {
if (node)
node.parentNode.removeChild(node);
}
let removeNodes = nodes => {
for (let n of nodes)
removeNode(n);
}
let hideThreadByID = id => {
let threads = docEvaluateArray(`//table[@id="threadlisttableid"]/tbody[tr/td[@class="by"][1][cite[text()="\n${id}"]|cite[text()="${id}"]]]`);
removeNodes(threads);
}
let hidePostByID = id => {
let posts = docEvaluateArray(`//div[@id="postlist"]//table[starts-with(@id, "pid")][tbody/tr/td/div[starts-with(@id, "favatar")]//div[@class="authi"][text()="${id}\n"]]`);
for (let p of posts) {
removeNode(p.querySelector('div.avatar'));
let content = p.querySelector('td[id^="postmessage_"]');
let newtd = document.createElement('td');
newtd.className = 't_f';
newtd.appendChild(document.createTextNode('*** \u4F5C\u8005\u7684\u4E00\u5207\u4E0D\u5B58\u5728\u4E8E\u4F60\u7684\u548C\u8C10\u4E16\u754C ***'))
content.parentNode.appendChild(newtd);
removeNode(content);
}
}
let blockbyid = () => {
document.removeEventListener("DOMContentLoaded", blockbyid);
for (let id of blocklist) {
hideThreadByID(id);
hidePostByID(id);
}
};
document.addEventListener("DOMContentLoaded", blockbyid);
}())
卡饭的页面结构也是醉了 大概是 discuz 的原因? 不去卡饭,也没有卡饭 id 不知道有没有遗漏的 这还只是个雏形 由于 xpath 的限制 在极端场合下,比如 id 包含单引号、双引号、同时包含单双引号 需要进一步 hack 另外还有必要把 id 列表移出脚本本身 再加上设置 id 列表的 UI 改进余地还很大 不过先这样吧 |
|
|
上一页
下一页