Greasy Fork

Mastodon identicon adder

Apply eyeballs to URIs better.

目前为 2019-07-08 提交的版本。查看 最新版本

// ==UserScript==
// @name         Mastodon identicon adder
// @namespace    https://greasyfork.org/en/users/316118-kim-reece
// @version      0.1
// @description  Apply eyeballs to URIs better.
// @author       feonixrift
// @grant        none
// require      https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]
// @match     *://hackers.town/*
// ==/UserScript==

// Techniques learned from https://openuserjs.org/scripts/nokeya/Direct_links_out/source
// Jquery dependency only exists because I can't figure out how to get the jdenticon function to run directly

(function() {
    'use strict';

    function identicate(link){
        var identicon = document.createElement("svg")
        identicon.setAttribute('data-jdenticon-value', link.href)
        identicon.setAttribute('style', 'width: 48px; height: 48px;')
        link.parentNode.appendChild(identicon, link.parentNode.children[0]);
//        $.fn.jdenticon()
        jdenticon.update(identicon)
    }

    function alldenticate(){
        var links = document.getElementsByClassName('status__avatar');
        for (var i=0; i<links.length; ++i){
            identicate(links[i])
        }
    }

    document.addEventListener('DOMNodeInserted', function(event){
        if (!event || !event.target || !(event.target instanceof HTMLElement)){
            return;
        }
        var node = event.target;
        if (node instanceof HTMLAnchorElement){
            if (node.classList.contains('status__avatar')){
                identicate(node)
            }
        }
        var links = node.getElementsByClassName('status__avatar');
        for (var i=0; i<links.length; ++i){
            identicate(links[i]);
        }
    }, false);

    console.log('loading')
    alldenticate()
})();