Trollface smaidiņa ievietotājs Google Hangouts čatos

Nedaudz patestēju tampermonkey Chrome pluginu. Uzrakstīju īsu skriptu, kas aizvieto visus “;7” ar 

Skripts:

// ==UserScript==
// @name        Trollface inserter
// @namespace   https://manas.domas.lv/
// @version     0.1
// @description Replaces ;7 with a small trollface icon in hangouts chats
// @author      Vampire
// @match       https://hangouts.google.com/webchat/*
// @grant       none
// @require     http://code.jquery.com/jquery-latest.js
// ==/UserScript==

// stolen from http://stackoverflow.com/a/12597182
var targetNodes = $('body');
var Observer = window.MutationObserver || window.WebKitMutationObserver;
var myObserver = new Observer(MutationHandler);
var obsConfig = { childList: true, characterData: false, attributes: false, subtree: true };

function AddTrollface(objs)
{
    objs.each(function(index)
    {
        var txt = $(this).html();
        txt = txt.replace(/;7/g, '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAxCAYAAACGYsqsAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuOWwzfk4AABFdSURBVGhDzZoFmJTlFsfX7oQrdosFFl7xqmCggoFeuxULDBAVebBbERULFewWA1RKAXUxMbAvFiqKAYoL7M7XOff3f/1m3GFmdheMe8/znGf6nffU//zP+301CyEroJeib6E/oPWoi4ZohCZommk+Uz3X+/o8QB20Aa1DZ6LT0c/QKegk9Dn0HvRy9CR0N3QtdBH0b5UO6LdLLrlkfNRRR3mDBw92HnnkEXvkyJHu6NGjvXHjxgUvvPBCOH78+HDChAlGee0PGzbMvfTSS92zzz7b7t27t9W3b9+G888/Pzdw4EDr9ttvd2688Ubviiuu8M477zyvZ8+e/uGHH+536dIlaN++fbDqqqvKQQXn5dC30WHoieh66F8me6P2tttu637zzTd+vgnh8/COO+5wMCZ37733Oq+88or7/fffe7lczpo7d67z3Xff+VOmTAnGjh3rP/bYY7knnniinkf7/vvvd++55x7nrrvu0qOHM72nnnrKefzxx2f36NFjRuvWrWe3atVqznLLLacMKTjhA/RMdFn0T5N/oW7Xrl0tz/OizK4SSZIkT6TTCy64wHryySf5mhfr/TiOkx9//DF4++23w+effz5++umnU4xI9fyTTz5J+F5iFlhAwXmhsuqAAw5wF110UZXLLPQU9A+n/UrojI4dO9q+71c09rXXXgtJ0Ya33nrLTdNUr6PbbrvNIpWtBx54wK6trfWJumdZloNjbJxg19XVuR988IFDdFUWOaKYw1G5Z555xnruueccVNH1ed95+OGHrYceesh68MEHbR6Nsq511VVXWWRL/OWXX3oHHXSQzT4V9ZdR1ftCy9AVVlghUpQy+4rCphMZhoEuzkjZmHfLLbdYH330kYtx8eTJkyOMCEhXZ/jw4ZaMYrNK4/izzz4rW29hBOel2dP8yy+/bK+99to+e/4ZFd4ssGyLyqiymmVxH2Mspawiet1111nUaYgx0Q033JC77777/E8//TRAwuwnRaF2o+nTpxc3Wkl++umnRI4BAzxq2yOiDmvm7r77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"></img>');
        $(this).html(txt);
    });
}

function MutationHandler(mutationRecords)
{
    mutationRecords.forEach ( function (mutation)
    {
        if (typeof mutation.addedNodes == "object" && mutation.type == "childList")
        {
            var jq = $(mutation.addedNodes);

            if(jq.find("span.tL8wMe.EMoHub").length > 0)
            {
                setTimeout(function()
                {
                    AddTrollface($("span.tL8wMe.EMoHub"));
                }, 500);
            }
        }
    });
}

$(function()
{
    targetNodes.each(function()
    {
        myObserver.observe(this, obsConfig);
    });
});

Rezultāts:

Trollface transfer