| 
			 
					阅读:7678回复: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 改进余地还很大 不过先这样吧  | 
	|
					
						
  | 
	
上一页
下一页