Greasy Fork

Greasy Fork is available in English.

QOL on the Web

Just some general quality of (my) life changes. Reddit: disable pinned top-bar, enforce old, hide sidebar on small screen. YouTube: disable end cards, enforce theatre-mode. Facebook: enforce most-recent. Duckduckgo: soften the ads.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name        QOL on the Web
// @namespace   Pogmog
// @description Just some general quality of (my) life changes. Reddit: disable pinned top-bar, enforce old, hide sidebar on small screen. YouTube: disable end cards, enforce theatre-mode. Facebook: enforce most-recent.  Duckduckgo: soften the ads.
// @version     3.2
// @include     https://old.reddit.com/*
// @include     https://www.reddit.com/*
// @include     https://www.youtube.com/*
// @include     https://www.facebook.com/*
// @include     https://duckduckgo.com/?q=*
// @grant       none
// ==/UserScript==

// Options
var reddit_switch_to_old = true;
var reddit_disable_side = true;
var reddit_disable_pinned = true;
var reddit_hide_automod_post = true;
var youtube_always_theatre = true;
var youtube_disable_endcards = true;
var facebook_force_recent = true;
var duckduckgo_ad_soften = true;

var urlCheck = document.URL;
/*
	If a tweak needs to use the scroll or onLoad events, call them with the following:
		setup_onLoad()
		setup_onScroll()
	...rather than have everything fire the onScroll event, etc.
*/
if (urlCheck.includes("reddit.com/") && reddit_hide_automod_post)
{
	setup_onLoad();
}


function afterLoad()
{
	// If anything needs to happen after page load (did for Reddit stuff before I found a better way).
	if (urlCheck.includes("reddit.com/"))
	{
		if (reddit_hide_automod_post)
		{
			var first_comment = document.getElementsByClassName("comment")[0];
			var element_to_use = first_comment.getElementsByClassName("tagline")[0];
			var author = element_to_use.getElementsByClassName("author")[0];
			if (author.innerHTML == "AutoModerator")
			{
				console.log("First comment is Automod.");
				element_to_use.getElementsByClassName("expand")[0].onclick();
			}
		}
	}
}
function onPageScroll()
{
	// If anything needs to happen on page scroll (did for Reddit stuff before I found a better way).
}

if (urlCheck.includes("reddit.com/"))
{
	if (urlCheck.includes("old.reddit.com/r/"))
	{
		if (reddit_disable_pinned)
		{
			// Reddit: hide the PINNED thing that pops up when you scroll down.
			var sheet = document.createElement('style')
			sheet.innerHTML = ".pinnable-placeholder .pinned {display: none;}";
			document.body.appendChild(sheet);
		}
	}
	else if (urlCheck.includes("www.reddit.com/"))
	{
		if (reddit_switch_to_old)
		{
			var new_url = urlCheck.replace("www.reddit.com", "old.reddit.com");
			window.location.href = new_url;
		}
	}
	if (reddit_disable_side)
	{
		var sheet = document.createElement('style')
		sheet.innerHTML = "@media only screen and (max-width: 975px) {.side {display: none; position:absolute; visibility: hidden;}body > .content {margin: 0;}}";
		document.body.appendChild(sheet);
	}
}
else if (urlCheck.includes("duckduckgo.com"))
{
	var style = document.createElement('style');
	style.type = 'text/css';
	style.innerHTML = '#ads {border: solid darkcyan 2px;opacity: 0.5;border-radius: 10px;}';
	document.getElementsByTagName('head')[0].appendChild(style);
}
else if (urlCheck.includes("youtube.com/watch"))
{
	if (youtube_disable_endcards)
	{
		// Get rid of YouTube's annoying ENDCARDS
		var sheet = document.createElement('style')
		sheet.innerHTML = ".ytp-ce-element {display: none;}";
		document.body.appendChild(sheet);
	}
	if (youtube_always_theatre)
	{
		// This code was lifted from r-a-y, namespace: "r-a-y/youtube/theater"
		window.addEventListener("yt-navigate-finish", function(event) {
			var newPlayer = document.querySelector('button.ytp-size-button');
			if ( newPlayer && null === document.querySelector('ytd-watch').getAttribute('theater') ) {
			  newPlayer.click();
			}
		  });
	}
}
else if (urlCheck.includes("facebook.com"))
{
	if (facebook_force_recent)
	{
		// Check the main URL is the most recent
		if (urlCheck == "https://www.facebook.com/") window.location.href = "https://www.facebook.com/?sk=h_chr";

		// Change all FB links to be the most_recent type.
		var fb_links = document.links; 
		for (var i=0; i<fb_links.length; i++)
		{
			//Set up link to variable
			var p = fb_links[i].href;
			//If link is the raw FB link, replace.
			if(p == "https://www.facebook.com/" || p == "https://www.facebook.com/?ref=tn_tnmn" || p == "https://www.facebook.com/?ref=logo") 
			{
				//Change to "most recent".
				fb_links[i].href = "https://www.facebook.com/?sk=h_chr";
			}
		}
	}
}

// Functions that need to be called more than once:
function reddit_removeSidebar()
{
	var redditSidebar = document.getElementsByClassName("side")[0];
	redditSidebar.style.removeProperty("display");
}
// Setup Function
function setup_onLoad()
{
	// For code that needs to happen post-pageload
	if (window.attachEvent) {window.attachEvent('onload', afterLoad);}
	else if (window.addEventListener) {window.addEventListener('load', afterLoad, false);}
	else {document.addEventListener('load', afterLoad, false);}
}
function setup_onScroll()
{
	// For code that needs to happen on scroll event
	window.addEventListener("scroll", onPageScroll);
}