您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Notifies the user if any keywords related to Infinity Wars are detected on the page.
// ==UserScript== // @name Avengers: Infinity War Spoiler Blocker // @namespace SawanRC // @version 0.5 // @description Notifies the user if any keywords related to Infinity Wars are detected on the page. // @author SawanRC // @include * // @grant GM_setValue // @grant GM_deleteValue // @grant GM_getValue // @require https://code.jquery.com/jquery-3.2.1.min.js // ==/UserScript== (function() { //Adds a .contains() function for strings. String.prototype.contains = function(n){var t=this.toLowerCase().indexOf(n.toLowerCase());return-1===t?!1:!0;}; var awaitingUser = false; var timer; var originalTitle; var blockedKeywords = ["Avengers", "Infinity War", "Captain America Dies", "Iron Man Dies", "Black Widow", "Hulk", "Thanos", "Avengers Infinity War", "Marvel", "Tony Stark", "Loki", "Thor", "Guardian"]; var observer = new MutationObserver(function() { clearTimeout(timer); timer = setTimeout(scanPage, 1000); }); function scanPage() { timer = null; if (awaitingUser) return; if (sessionStorage.getItem("SPOILER-" + window.location.hostname)) { console.log("Spoilers unchecked for session."); observer.disconnect(); return; } if (GM_getValue("SPOILER-" + window.location.hostname)) { console.log("Spoilers unchecked for domain."); observer.disconnect(); return; } $.each(blockedKeywords, function(index, item) { if (awaitingUser) return false; var html = $('head').text() + $('body').text(); if (html.contains(item)) { awaitingUser = true; console.log("Found: " + item); } }); if (awaitingUser) { hideContent(); } } function showContent() { hider.hide(); $("head > title").text(originalTitle); } function hideContent() { $("body").append(hider); originalTitle = $("head > title").text(); $("head > title").text("Spoilers blocked."); $("#spoilerBlock-Once").on('click', function() { showContent(); }); $("#spoilerBlock-Session").on('click', function() { sessionStorage.setItem("SPOILER-" + window.location.hostname, true); showContent(); }); $("#spoilerBlock-Domain").on('click', function() { GM_setValue("SPOILER-" + window.location.hostname, true); showContent(); }); } var hider = $("<div>", {id: "spoilerBlockBox", "style": "" }); var hiderStyle = $(`<style> #spoilerBlockBox { position: fixed !important; text-align: center !important; left: 0px !important; top: 0px !important; width: 100% !important; height: 100% !important; z-index: 2147483647 !important; padding-top: 70px !important; background: #111 !important; color: #fff !important; font-family: Arial !important; } #spoilerBlockBox h1 { color: #fff !important; font-size: 30px !important; display: inline-block !important; } #spoilerBlockBox button { color: #000 !important; background-color: #fff !important; padding: 5px !important; }</style>`); $("head").append(hiderStyle); hider.html(` <h1>Careful!</h1> <p>This page may contain spoilers for Avengers: Infinity War. Are you sure you would like to continue?</p> <button id="spoilerBlock-Once">Continue once</button> <button id="spoilerBlock-Session">Ignore spoilers for this session</button> <button id="spoilerBlock-Domain">Ignore spoilers for this domain</button> `); scanPage(); observer.observe(document, { childList: true, characterData: true, subtree: true }); })();