Add default favicon for any sites that don't have a favicon
目前為
// ==UserScript==
// @name Replace Missing Favicon
// @namespace iFantz7E.ReplaceMissingFavicon
// @description Add default favicon for any sites that don't have a favicon
// @version 0.10
// @icon http://i.imgur.com/AI5VsOE.png
// @include *
// @run-at document-start
// @grant GM_xmlhttpRequest
// @connect self
// @copyright 2017, 7-elephant
// ==/UserScript==
(function ()
{
"use strict";
// jshint multistr:true
function attachOnReady(callback)
{
document.addEventListener("DOMContentLoaded", function (e)
{
callback();
});
}
function getFavicon()
{
var favicon = null;
var elesLink = document.querySelectorAll("link");
for (var i = 0; i < elesLink.length; i++)
{
var attrRel = elesLink[i].getAttribute("rel");
if((attrRel === "icon") || (attrRel == "shortcut icon"))
{
favicon = elesLink[i].getAttribute("href");
break;
}
}
return favicon;
}
function main()
{
// Default icon from https://s2.googleusercontent.com/s2/favicons?domain=sample
var iconDefault = "data:image/png;base64,\
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABs0lEQVR4AWL4//8/RRjO8Iucx+noO0O2qmlbUEnt5r3Juas+\
hsQD6KaG7dqCKPgx72Pe9GIY27btZBrbtm3btm0nO12D7tVXe63jqtqqU/iDw9K58sEruKkngH0DBljOE+T/qqx/Ln718RZO\
Fasxyd3XRbWzlFMxRbgOTx9QWFzHtZlD+aqLb108sOAIAai6+NbHW7lUHaZkDFJt+wp1DG7R1d0b7Z88EOL08oXwjokcOvvU\
xYMjBFCamWP5KjKBjKOpZx2HEPj+Ieod26U+dpg6lK2CIwTQH0oECGT5eHj+IgSueJ5fPaPg6PZrz6DGHiGAISE7QPrIvIKV\
rSvCe2DNHSsehIDatOBna/+OEOgTQE6WAy1AAFiVcf6PhgCGxEvlA9QngLlAQCkLsNWhBZIDz/zg4ggmjHfYxoPGEMPZECW+\
zjwmFk6Ih194y7VHYGOPvEYlTAJlQwI4MEhgTOzZGiNalRpGgsOYFw5lEfTKybgfBtmuTNdI3MrOTAQmYf/DNcAwDeycVjRO\
gZFt18gMso6V5Z8JpcEk2LPKpOAH0/4bKMCAYnuqm7cHOGHJTBRhAEJN9d/t5zCxAAAAAElFTkSuQmCC";
if (!getFavicon())
{
GM_xmlhttpRequest(
{
url: "/favicon.ico",
method: "HEAD",
onload: function(response)
{
if (response.status !== 200)
{
//console.log("Favicon: Not found");
var ele = document.createElement("link");
ele.setAttribute("rel", "icon");
ele.setAttribute("type", "image/png");
ele.setAttribute("href", iconDefault);
document.head.appendChild(ele);
}
}
});
}
}
attachOnReady(main);
})();
// End