// ==UserScript== // @name FaviconizeGoogle // @namespace http://userscripts.org/users/89794 (joeytwiddle) // @description Adds favicons next to Google search results. Also works for startpage.com // @homepage https://greasyfork.org/en/scripts/7664-faviconizegoogle // @downstreamURL http://userscripts.org/scripts/source/48636.user.js // @version 1.3.3 // @include /https?:\/\/((www\.)?|encrypted\.|news\.)google\.[a-z]{2,3}(\.[a-z]{2})?\/(search|webhp|\?gws_rd|\?gfe_rd)?.*/ // @include /https?:\/\/(www\.|[a-z0-9-]*\.)?startpage.com\/.*/ // @grant none // @downloadURL none // ==/UserScript== var placeFaviconByUrl = false; // The little green link below the article title var placeFaviconAfter = false; // Display after the link instead of before it var placeFaviconInsideLink = false; // Makes the favicon clickable but may also get underlined // Some alternatives/remixes: // - https://github.com/NV/faviconize-google.js (Chrome extension) // - https://greasyfork.org/en/scripts/12395-google-favicons (works with Endless Google) // - https://gist.github.com/Sir-Cumference/223d36cbec6473b0e6927e5c50c11568 (very short code, @match works with Greasemonkey) // DONE: Provided more options where to place favicon: by the link or by the // url, before or after, inside or outside the link. However in my opinion // they all suck except the default. ;) // Broken images would be messy, but Firefox seems to hide them after a while // anyway. We do still see the gap from the image's padding though! // It might be desirable to check each image actually exists/loads, or remove it. // Is that possible, without making an http request ourselves? // Third-party host URL detection is implemented leniently, and accordingly // hostname extraction implemented aggressively, which results in favicons // being given to unexpected things like bookmarklets which contain a site url. /* function filterListBy (l,c) { var ret = new Array(); for (var i=0;i a'); } return links; } function getElementsByClassName (cN) { return getElementsByTagNameAndClassName("*",cN); } var style = document.createElement('STYLE'); var padSide = (placeFaviconAfter?'left':'right'); style.innerHTML = ".favicon { padding-"+padSide+": 4px; vertical-align: middle; width: 1em; height: 1em; padding-bottom: 0.2em; }"; document.getElementsByTagName('head')[0].appendChild(style); function updateFavicons () { var links = getGoogleResultsLinks(); // Allows it to work on any sites: if (links.length === 0) { links = document.getElementsByTagName("A"); } // console.log("Got links = "+links.snapshotLength); // for (var i=0;i