Replace Missing Favicon

Add default favicon for any sites that don't have a favicon

当前为 2017-05-12 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Replace Missing Favicon
  3. // @namespace iFantz7E.ReplaceMissingFavicon
  4. // @description Add default favicon for any sites that don't have a favicon
  5. // @version 0.11
  6. // @icon http://i.imgur.com/AI5VsOE.png
  7. // @include *
  8. // @run-at document-start
  9. // @grant GM_xmlhttpRequest
  10. // @connect self
  11. // @copyright 2017, 7-elephant
  12. // ==/UserScript==
  13.  
  14. (function ()
  15. {
  16. "use strict";
  17. // jshint multistr:true
  18.  
  19. function attachOnReady(callback)
  20. {
  21. document.addEventListener("DOMContentLoaded", function (e)
  22. {
  23. callback();
  24. });
  25. }
  26.  
  27. function hasFavicon()
  28. {
  29. var elesLink = document.querySelectorAll("link");
  30. for (var i = 0; i < elesLink.length; i++)
  31. {
  32. var attrRel = elesLink[i].getAttribute("rel").trim().toLowerCase();
  33. if((attrRel === "icon") || (attrRel === "shortcut icon"))
  34. {
  35. return true;
  36. }
  37. }
  38. return false;
  39. }
  40.  
  41. function main()
  42. {
  43. // Default icon from https://s2.googleusercontent.com/s2/favicons?domain=sample
  44. var iconDefault = "data:image/png;base64,\
  45. iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABs0lEQVR4AWL4//8/RRjO8Iucx+noO0O2qmlbUEnt5r3Juas+\
  46. hsQD6KaG7dqCKPgx72Pe9GIY27btZBrbtm3btm0nO12D7tVXe63jqtqqU/iDw9K58sEruKkngH0DBljOE+T/qqx/Ln718RZO\
  47. Fasxyd3XRbWzlFMxRbgOTx9QWFzHtZlD+aqLb108sOAIAai6+NbHW7lUHaZkDFJt+wp1DG7R1d0b7Z88EOL08oXwjokcOvvU\
  48. xYMjBFCamWP5KjKBjKOpZx2HEPj+Ieod26U+dpg6lK2CIwTQH0oECGT5eHj+IgSueJ5fPaPg6PZrz6DGHiGAISE7QPrIvIKV\
  49. rSvCe2DNHSsehIDatOBna/+OEOgTQE6WAy1AAFiVcf6PhgCGxEvlA9QngLlAQCkLsNWhBZIDz/zg4ggmjHfYxoPGEMPZECW+\
  50. zjwmFk6Ih194y7VHYGOPvEYlTAJlQwI4MEhgTOzZGiNalRpGgsOYFw5lEfTKybgfBtmuTNdI3MrOTAQmYf/DNcAwDeycVjRO\
  51. gZFt18gMso6V5Z8JpcEk2LPKpOAH0/4bKMCAYnuqm7cHOGHJTBRhAEJN9d/t5zCxAAAAAElFTkSuQmCC";
  52. if (!hasFavicon())
  53. {
  54. GM_xmlhttpRequest(
  55. {
  56. url: "/favicon.ico",
  57. method: "HEAD",
  58. onload: function(response)
  59. {
  60. if (response.status !== 200)
  61. {
  62. //console.log("Favicon: Not found");
  63. var ele = document.createElement("link");
  64. ele.setAttribute("rel", "icon");
  65. ele.setAttribute("type", "image/png");
  66. ele.setAttribute("href", iconDefault);
  67. document.head.appendChild(ele);
  68. }
  69. }
  70. });
  71. }
  72. }
  73.  
  74. attachOnReady(main);
  75. })();
  76.  
  77. // End