Replace Missing Favicon

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

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

  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.10
  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 getFavicon()
  28. {
  29. var favicon = null;
  30. var elesLink = document.querySelectorAll("link");
  31. for (var i = 0; i < elesLink.length; i++)
  32. {
  33. var attrRel = elesLink[i].getAttribute("rel");
  34. if((attrRel === "icon") || (attrRel == "shortcut icon"))
  35. {
  36. favicon = elesLink[i].getAttribute("href");
  37. break;
  38. }
  39. }
  40. return favicon;
  41. }
  42.  
  43. function main()
  44. {
  45. // Default icon from https://s2.googleusercontent.com/s2/favicons?domain=sample
  46. var iconDefault = "data:image/png;base64,\
  47. iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABs0lEQVR4AWL4//8/RRjO8Iucx+noO0O2qmlbUEnt5r3Juas+\
  48. hsQD6KaG7dqCKPgx72Pe9GIY27btZBrbtm3btm0nO12D7tVXe63jqtqqU/iDw9K58sEruKkngH0DBljOE+T/qqx/Ln718RZO\
  49. Fasxyd3XRbWzlFMxRbgOTx9QWFzHtZlD+aqLb108sOAIAai6+NbHW7lUHaZkDFJt+wp1DG7R1d0b7Z88EOL08oXwjokcOvvU\
  50. xYMjBFCamWP5KjKBjKOpZx2HEPj+Ieod26U+dpg6lK2CIwTQH0oECGT5eHj+IgSueJ5fPaPg6PZrz6DGHiGAISE7QPrIvIKV\
  51. rSvCe2DNHSsehIDatOBna/+OEOgTQE6WAy1AAFiVcf6PhgCGxEvlA9QngLlAQCkLsNWhBZIDz/zg4ggmjHfYxoPGEMPZECW+\
  52. zjwmFk6Ih194y7VHYGOPvEYlTAJlQwI4MEhgTOzZGiNalRpGgsOYFw5lEfTKybgfBtmuTNdI3MrOTAQmYf/DNcAwDeycVjRO\
  53. gZFt18gMso6V5Z8JpcEk2LPKpOAH0/4bKMCAYnuqm7cHOGHJTBRhAEJN9d/t5zCxAAAAAElFTkSuQmCC";
  54. if (!getFavicon())
  55. {
  56. GM_xmlhttpRequest(
  57. {
  58. url: "/favicon.ico",
  59. method: "HEAD",
  60. onload: function(response)
  61. {
  62. if (response.status !== 200)
  63. {
  64. //console.log("Favicon: Not found");
  65. var ele = document.createElement("link");
  66. ele.setAttribute("rel", "icon");
  67. ele.setAttribute("type", "image/png");
  68. ele.setAttribute("href", iconDefault);
  69. document.head.appendChild(ele);
  70. }
  71. }
  72. });
  73. }
  74. }
  75.  
  76. attachOnReady(main);
  77. })();
  78.  
  79. // End