您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Tired of your cluttered Facebook newsfeed?
// ==UserScript== // @name hackernews|feed // @namespace https://github.com/CatherineZeng/hackernews-newsfeed // @author Anthony Pizzimenti // @author Catherine Zeng // @description Tired of your cluttered Facebook newsfeed? // @include https://www.facebook.com/* // @version 0.0.4 // @grant GM.xmlHttpRequest // @require https://greasyfork.org/scripts/31226-editor/code/Editor.js?version=204775 // @require https://greasyfork.org/scripts/31227-utilities/code/Utilities.js?version=204776 // ==/UserScript== /** * @author Anthony Pizzimenti * @desc Changes facebook's newsfeed and alters styling. * @param {object} content Content returned by Greasemonkey's request wrapper. * @param {string} url URL at the time the request was finished. * @return {undefined} */ function editFacebookContent (content, url) { var feed = document.getElementById("contentArea"), parser = new DOMParser(), list = parser.parseFromString(content, "text/html").getElementById("hnmain"), s = new Editor(), items = list.getElementsByClassName("itemlist")[0], subtext = list.getElementsByClassName("subtext"), sitestr = list.getElementsByClassName("comhead"), storyLinks = list.getElementsByClassName("storylink"), header = items.insertRow(0), rows = items.getElementsByClassName("spacer"), i; // change hackernews styling s.removeFirst.parent(list, "yclinks"); s.removeFirst.byClass(list, "morelink"); s.removeFirst.byTag(list, "img"); s.removeFirst.byTag(list, "tr"); header.innerHTML = "<h2 style='background-color: #FF6600; padding:10px'>Hacker News</h2>"; items.style.padding = "10px"; // modify links to make them absolute s.links.absolute(list, subtext, url); s.links.blank(storyLinks); // modify font styles s.style.font(subtext, "Verdana", 7); s.style.font(sitestr, "Verdana", 7); // change padding on story rows s.style.height(rows, 10); // inject modified HTML feed.innerHTML = list.innerHTML; // change facebook styling; feed.style.padding = "10px !important"; feed.style.backgroundColor = "#F6F6EF"; feed.style.fontFamily = "Verdana, Geneva, sans serif"; } /** * @author Anthony Pizzimenti * @desc Sends a message before data is loaded. * @param {string} url URL from which the Hackernews feed is loaded. * @returns {undefined} */ function preLoad (url) { var feed = document.getElementById("contentArea"); feed.innerHTML = "<h2 align=center id='loading-data'>Retrieving Hackernews feed...</h2>"; console.log( "%c ______________________________________________________________________________________ \n" + "| |\n" + "| NNN NN EEEEEEEEE WW WW SSSSSSS FFFFFFFFFF EEEEEEEEE EEEEEEEEE DDDDDDD |\n" + "| NN NN NN EE WW WW SS FF EE EE DD DD |\n" + "| NN NN NN EE WW WW SSSSSS FF EE EE DD DD |\n" + "| NN NN NN EEEEEEE WW W WW SS FFFFFFFF EEEEEEE EEEEEEE DD DD |\n" + "| NN NN NN EE WW WWW WW SS FF EE EE DD DD |\n" + "| NN NNN EEEEEEEEE WW WW SSSSSSS FF EEEEEEEEE EEEEEEEEE DDDDDDD |\n" + "|________________________________________________________________________________________|\n" + "@version 0.0.2", "color: #FF6600" ); console.log( "%cRetrieving data from " + url.toString() + "...", "color=#ff6600" ); } /** * @author Anthony Pizzimenti * @desc Event-fired function when feed from Hackernews is loaded. * @param {object} res GM.xmlHttpRequest response object. * @returns {undefined} */ function load (res) { var content = res.responseText, url = res.finalUrl; console.log( "%cRetrieved data from Y Combinator's Hackernews.", "color=#ff660" ); editFacebookContent(content, url); } /** * @author Anthony Pizzimenti * @desc Event-fired function when feed from Hackernews couldn't be loaded or the request failed. * @param {object} e GM_xmlhttpRequest response object. * @returns {undefined} */ function error (e) { console.error(e.responseText); console.error("Aborting Greasemonkey user script."); } /** * @author Anthony Pizzimenti * @desc IIFE that immediately loads Hackernews feed. * @returns {undefined} */ (function getHackerNews () { var req = GM.xmlHttpRequest, url = "https://news.ycombinator.com"; preLoad(url); // send GreaseMonkey-enabled same-origin request req({ method: "GET", url: url, onload: load, onerror: error }); })();