Disable specific sites

A script to prevent a user opening some specific sites

Ekde 2022/01/09. Vidu La ĝisdata versio.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Disable specific sites
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  A script to prevent a user opening some specific sites
// @author       You
// @match        *
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @license      MIT
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    var disableStatus = false

    function init(){
        reloadDisableStatus()
        stopLoadingPageIfInDisableList()
    }

    function showDisableGmBtns(){
        let menu = GM_registerMenuCommand("Disable This Site", ()=>{
            toggleDisableStatus()
            document.body.innerHTML = ""
            GM_unregisterMenuCommand(menu)

        })
    }

    function showEnableGmBtns(){
        let menu = GM_registerMenuCommand("Enable This Site", ()=>{
            toggleDisableStatus()
            GM_unregisterMenuCommand(menu)
            location.reload()
        })
    }

    /* function isInDisableList(){
        return localStorage.DisableSpecificSites?true:false
    } */

    function reloadDisableStatus(){
        disableStatus = localStorage.DisableSpecificSites=="true"?true:false
    }

    function stopLoadingPageIfInDisableList(){
        if(disableStatus == true){
            //console.log(disableStatus)
            //showErrorPage()
            window.stop()
            showEnableGmBtns()
        }else {
            showDisableGmBtns()
        }

    }

    function toggleDisableStatus(){
        if(disableStatus){
            disableStatus = false
            localStorage.DisableSpecificSites = false
            showDisableGmBtns()
        }
        else{
            disableStatus = true
            localStorage.DisableSpecificSites = true
            showEnableGmBtns()
        }
    }

    function showErrorPage(){
        const HTMLcode = `
        <div style="text-align: center; margin-top: 30%">
        <svg xmlns="http://www.w3.org/2000/svg" width="72" height="72" fill="currentColor" class="bi bi-slash-circle" viewBox="0 0 16 16">
        <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
        <path d="M11.354 4.646a.5.5 0 0 0-.708 0l-6 6a.5.5 0 0 0 .708.708l6-6a.5.5 0 0 0 0-.708z"/>
        </svg>
        <div style='margin-top: 20px; font-size: 24px;font-family: system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"'>
            This Webpage is disabled.
        </div>
        </div>
        `

        document.write(HTMLcode)
    }

    init()


})();