<?xml version="1.0" encoding="UTF-8"?>
<post>
  <body>Hi everybody,

Have fast fix it :
Works under FF3.
This code could improve (img element creation/deletion)...

Can be downloaded/installed &lt;a href=&quot;http://www.xeoos.fr/gmscripts/google_reader_show_feed_.user.js&quot;&gt;from my site&lt;/a&gt; or from &lt;a href=&quot;http://userscripts.org/scripts/show/41442&quot;&gt;my space&lt;/a&gt;

LudoO

&lt;code&gt;
// ==UserScript==
// @name           Google Reader: Show Feed Favicons
// @author henrah / LudoO(xeoos.fr) 
// @namespace      http://henrah.googlepages.com
// @include        htt*://www.google.*/reader/view*
// ==/UserScript==

var Favicons = {
	UNFIXED_ICON_XPATH: '//span[contains(@class,&quot;icon sub-icon&quot;)][not(@label)]',
	EXPORT_URL: '/reader/subscriptions/export',
	FAVICON_URL: ['http://', '/favicon.ico'],
	
	PARSE_DOMAIN: /:\/\/([\w\.]+)/,
	
	domains: {},
	cacheIcons: {},
	
	loadDomains: function () {
		var xhr = new XMLHttpRequest();
		xhr.open('get', this.EXPORT_URL, true);
		xhr.onload = function(){
			Favicons.setDomains(xhr.responseXML);
		};
		xhr.send('');
	},
	
	parseDomain: function(url) {
		var match = this.PARSE_DOMAIN.exec(url);
		return match &amp;&amp; match[1];
	},
	
	setDomains: function (opmlDoc) {
		var outline, i = 0,
			outlines = opmlDoc.getElementsByTagName('outline');
			
		while (outline = outlines[i++]) {
			if (! outline.hasAttribute('htmlUrl')) continue;
			var title = outline.getAttribute('title');
					
			if (title.length &gt; 24)
				title = title.substr(0, 21) + '...';
				
			this.domains[title] =
				this.parseDomain(outline.getAttribute('htmlUrl'))
				|| this.parseDomain(outline.getAttribute('xmlUrl'));
		}
		setInterval(function () {
			Favicons.fixAllIcons();
		}, 2000);
	},
	
	fixAllIcons: function () {
		var icon, i = 0, label;
		var uncorrectedIcons = document.evaluate(this.UNFIXED_ICON_XPATH, document, null, 6, null);
		while (icon = uncorrectedIcons.snapshotItem(i++)) {
			  label = icon.nextSibling.firstChild.textContent;
	        var urlIcon = this.FAVICON_URL.join(this.domains[label]);
	        var img = document.createElement('img');
	        icon.appendChild(img);
	        icon.setAttribute('label', label);
			img.setAttribute('style', 'display:none');
	        img.src = urlIcon;
	        
	        img.addEventListener(&quot;error&quot;, function(e){
			  e.target.parentNode.removeChild(e.target);
	        }, false);
	        
	        img.addEventListener(&quot;load&quot;, function(e){
			  var FAVICON_STYLE= ['background: url(', ');'];
	          e.target.parentNode.setAttribute('style', FAVICON_STYLE.join(e.target.src));
	          e.target.parentNode.removeChild(e.target);
	        }, false);
        
		}
	}
};

Favicons.loadDomains();


&lt;/code&gt;</body>
  <body-html>&lt;p&gt;Hi everybody,&lt;/p&gt;

&lt;p&gt;Have fast fix it :
&lt;br /&gt;Works under FF3.
&lt;br /&gt;This code could improve (img element creation/deletion)...&lt;/p&gt;

&lt;p&gt;Can be downloaded/installed &lt;a href=&quot;http://www.xeoos.fr/gmscripts/google_reader_show_feed_.user.js&quot;&gt;from my site&lt;/a&gt; or from &lt;a href=&quot;http://userscripts.org/scripts/show/41442&quot;&gt;my space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LudoO&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
&lt;br /&gt;// ==UserScript==
&lt;br /&gt;// @name           Google Reader: Show Feed Favicons
&lt;br /&gt;// @author henrah / LudoO(xeoos.fr) 
&lt;br /&gt;// @namespace      http://henrah.googlepages.com
&lt;br /&gt;// @include        htt*://www.google.*/reader/view*
&lt;br /&gt;// ==/UserScript==&lt;/p&gt;

&lt;p&gt;var Favicons = {
&lt;br /&gt;	UNFIXED_ICON_XPATH: '//span[contains(@class,&quot;icon sub-icon&quot;)][not(@label)]',
&lt;br /&gt;	EXPORT_URL: '/reader/subscriptions/export',
&lt;br /&gt;	FAVICON_URL: ['http://', '/favicon.ico'],
&lt;br /&gt;	
&lt;br /&gt;	PARSE_DOMAIN: /:\/\/([\w\.]+)/,
&lt;br /&gt;	
&lt;br /&gt;	domains: {},
&lt;br /&gt;	cacheIcons: {},
&lt;br /&gt;	
&lt;br /&gt;	loadDomains: function () {
&lt;br /&gt;		var xhr = new XMLHttpRequest();
&lt;br /&gt;		xhr.open('get', this.EXPORT_URL, true);
&lt;br /&gt;		xhr.onload = function(){
&lt;br /&gt;			Favicons.setDomains(xhr.responseXML);
&lt;br /&gt;		};
&lt;br /&gt;		xhr.send('');
&lt;br /&gt;	},
&lt;br /&gt;	
&lt;br /&gt;	parseDomain: function(url) {
&lt;br /&gt;		var match = this.PARSE_DOMAIN.exec(url);
&lt;br /&gt;		return match &amp;amp;&amp;amp; match[1];
&lt;br /&gt;	},
&lt;br /&gt;	
&lt;br /&gt;	setDomains: function (opmlDoc) {
&lt;br /&gt;		var outline, i = 0,
&lt;br /&gt;			outlines = opmlDoc.getElementsByTagName('outline');
&lt;br /&gt;			
&lt;br /&gt;		while (outline = outlines[i++]) {
&lt;br /&gt;			if (! outline.hasAttribute('htmlUrl')) continue;
&lt;br /&gt;			var title = outline.getAttribute('title');
&lt;br /&gt;					
&lt;br /&gt;			if (title.length &gt; 24)
&lt;br /&gt;				title = title.substr(0, 21) + '...';
&lt;br /&gt;				
&lt;br /&gt;			this.domains[title] =
&lt;br /&gt;				this.parseDomain(outline.getAttribute('htmlUrl'))
&lt;br /&gt;				|| this.parseDomain(outline.getAttribute('xmlUrl'));
&lt;br /&gt;		}
&lt;br /&gt;		setInterval(function () {
&lt;br /&gt;			Favicons.fixAllIcons();
&lt;br /&gt;		}, 2000);
&lt;br /&gt;	},
&lt;br /&gt;	
&lt;br /&gt;	fixAllIcons: function () {
&lt;br /&gt;		var icon, i = 0, label;
&lt;br /&gt;		var uncorrectedIcons = document.evaluate(this.UNFIXED_ICON_XPATH, document, null, 6, null);
&lt;br /&gt;		while (icon = uncorrectedIcons.snapshotItem(i++)) {
&lt;br /&gt;			  label = icon.nextSibling.firstChild.textContent;
&lt;br /&gt;	        var urlIcon = this.FAVICON_URL.join(this.domains[label]);
&lt;br /&gt;	        var img = document.createElement('img');
&lt;br /&gt;	        icon.appendChild(img);
&lt;br /&gt;	        icon.setAttribute('label', label);
&lt;br /&gt;			img.setAttribute('style', 'display:none');
&lt;br /&gt;	        img.src = urlIcon;
&lt;br /&gt;	        
&lt;br /&gt;	        img.addEventListener(&quot;error&quot;, function(e){
&lt;br /&gt;			  e.target.parentNode.removeChild(e.target);
&lt;br /&gt;	        }, false);
&lt;br /&gt;	        
&lt;br /&gt;	        img.addEventListener(&quot;load&quot;, function(e){
&lt;br /&gt;			  var FAVICON_STYLE= ['background: url(', ');'];
&lt;br /&gt;	          e.target.parentNode.setAttribute('style', FAVICON_STYLE.join(e.target.src));
&lt;br /&gt;	          e.target.parentNode.removeChild(e.target);
&lt;br /&gt;	        }, false);
&lt;br /&gt;        
&lt;br /&gt;		}
&lt;br /&gt;	}
&lt;br /&gt;};&lt;/p&gt;

&lt;p&gt;Favicons.loadDomains();&lt;/p&gt;

&lt;p&gt;&lt;/code&gt;&lt;/p&gt;</body-html>
  <created-at type="datetime">2009-01-30T14:08:04Z</created-at>
  <forumable-id type="integer">24371</forumable-id>
  <forumable-type>Script</forumable-type>
  <id type="integer">92994</id>
  <topic-id type="integer">21005</topic-id>
  <updated-at type="datetime">2009-02-02T10:36:35Z</updated-at>
  <user-agent nil="true"></user-agent>
  <user-id type="integer">79200</user-id>
</post>
