Facebook Filter

Minimizes all posts your friends didn't post (friend liked, friend commented, friend attends...)

当前为 2016-01-14 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Facebook Filter
// @namespace    thetom.facebook
// @version      1.0
// @description  Minimizes all posts your friends didn't post (friend liked, friend commented, friend attends...)
// @author       TheTomCZ <[email protected]>
// @match        https://www.facebook.com/*
// @require      https://code.jquery.com/jquery-2.1.4.min.js
// @grant        none
// ==/UserScript==

$(function() {
    'use strict';
    var $stream = $("#stream_pagelet > div:last > div");
	var storyCounter = 0;
    
    String.prototype.contains = function(it) { return this.indexOf(it) != -1; };
	
	function minimize($elem){
		var $title = $elem.find("h5");
		if($title.data("filtered")==="true"){
			return;
		}
		var $story = $elem.find(".userContentWrapper > div:first > div:last");
		storyCounter++;
		$story.hide().attr("id","id"+storyCounter);
		$title.append(" <a id='showStory"+storyCounter+"'>unhide</a>").data("filtered","true");$elem.css({paddingBottom:"5px", opacity: "0.5"});
		$("#showStory"+storyCounter).click(function(){$story.show();});
	}

    function filter(index,elem){
		if(!$(elem).attr){
			return;
		}
		var $elem = $(elem);
		if($elem.attr("id")){
			if($elem.attr("id").substring(0,10)==="substream_"){
				$elem.find("div[data-ft]").map(filter);
				return;
			}
			if($elem.attr("id").substring(0,11)==="more_pager_"){
				return;
			}
			if($elem.attr("id").substring(0,15)==="newsFeedHeading"){
				return;
			}
			if($elem.attr("id").substring(0,16)!=="hyperfeed_story_"){
				return;
			}
		} else {
			return;
		}
		var title = $elem.find("h5").text();
        if(
			title.contains("liked this.") ||
			title.contains("liked this post ") ||
			title.contains(" likes ") ||
			title.contains(" replied to a comment on this.") ||
			title.contains(" commented on this.") ||
			title.contains(" is now friends with ") ||
			title.contains(" is interested in an event")
		){
             minimize($elem);
		}
    }
    function filterAll(){
		setTimeout(_filterAll,500);
	}
    function _filterAll(){
        $stream.children().map(filter);
    }
    
   filterAll();
    $(document).on("scroll",filterAll);
});