Introduction
TinyRSS is a very small but powerful RSS Reader that works inside of the Internet Explorer. There are some good readers out there. Most of them are implemented as a new program and not within the browser. After testing Firefox for some time, I discovered that adding RSS bookmarks to the bookmark sidebar is a very useful feature.
This is an implementation of an RSS Explorer Bar in less than 15 KB using HTML and JavaScript only. The advantage over the IE 7 / Vista built-in solution is that blogs that have links only in the RSS file are still useable and that the content of the blogs is shown in its original layout.
From the technical point of view, this implementation shows and combines some techniques, specially the integration of client-side user specific data, that are helpful to build client-side JavaScript and HTML based applications.
About this update
TinyRss is now stable for a long time, IE 7 is available, and here are the instructions to use TinyRss with IE 7.
1. Enable the search panel
There is a new checkbox in the advanced settings of the Internet Options called "Enable websites to use the search pane*". You have to enable this to make _search targets work.
2. Enable scripting
If you load the TinyRss.htm file from your local computer, you also have to enable "Allow active content to run in files from my computer" in the advanced settings of the Internet Options. This option might be turned off and JavaScript won't work then.
3. Enable reading data from RSS feeds
If you load the TinyRss.htm file from your local computer on a web site, you must enable the browser to load the RSS data from the sites that you have specified. This can be done by enabling the "Access data sources across domains" option in the "Miscellaneous" section of the Security Settings of the Internet Options. Be sure to pick the right zone: don't enable this option in the Internet Zone, but add the web site to the Trusted Sites zone list and enable the option there.
Some new features:
- The layout has changed a little bit.
- The RSS data is cached for some minutes. You can force a reload of the RSS data by Ctrl+clicking on the "RSS" in the title.
- The parsing of RSS feeds has been improved to load some more typical RSS formats.
QuickStart of TinyRSS
You can download the "source and project" files to any place on your computer and start the TinyRSS.htm file, that's all you have to do. You can also start it from my site.
TinyRSS Explorer Bar setup for IE 6.x
A workaround and a more comfortable version that avoids the bug is now available by using the Explorer Bar plug-in feature of the Microsoft Internet Explorer. ZachJ had posted a comment on this some time back. Some minor changes have been made to the JavaScript code.
I made it easy for you to install TinyRSS this way by using a small installer packet that you can find in the zip file. I also added the complete Visual Studio project so that you can build it yourself or reuse it anywhere.
The setup program also adds an icon that can be added to the icon bar of IE to activate the TinyRSS Explorer Bar.
Just download the TinyRss.zip file, extract and start the contained MSI setup file.
Give it a try
To start this RSS Reader, you can just download the attached zip file and extract the only file TinyRss.htm and start it. That's all.
When starting the TinyRSS Reader without any parameters, it additionally opens a side bar that will contain all the RSS feeds you added and the hyperlinks to all the entries of the feeds.
Adding a new feed, removing a feed, or rearranging feeds
Click the Settings command in the orange title bar to open the administration page in the main window:
Here, you can add a new URL to the RSS feed. Use the [^] and [v] links to change the order of the feeds. With the [+] and [-] links, you can change whether the links in the feed should be shown or hidden when the page loads.
You can delete individual RSS feeds or all your feeds in one step. You will be prompted for deletion, of course.
How it is done
Opening an Explorer Bar
Implementing an Explorer Bar can be a complex thing. Normally, you have to implement a COM interface and register it in the local registry.
This implementation uses another approach by reusing the Search bar. Opening a specific content in the Search bar can be done by specifying "_search" as the target window name in a hyperlink tag or using the window.open
function. With this little trick, you can display any HTML side by side to the main window:
window.open("?mode=list", "_search");
Saving the list of your favorite RSS feeds
In IE, there is a built-in feature called UserData behavior that allows web pages to save some data in the local profile of the user that can be picked up again later:
<span id="feeds"
style="display: none; behavior: url(#default#userdata)">
</span>
Using the behavior
CSS attribute, the built-in UserData functionality is added to the HTML object. By specifying this, the object "feeds
" now has some more methods available that allow loading and saving of small amounts of XML formatted data to the local file system:
var feedStore = document.getElementById("feeds");
feedStore.load("RssStore");
var xDoc = feedStore.XMLDocument;
TinyRSS uses the UserData behavior twice. Once for saving a list for all the RSS feeds that should be displayed, and again for saving the retrieved RSS data from each RSS feed for 30 minutes, to disable too frequent data requests.
UserData is limited in the amount of data that can be saved, so too many feeds or too large feeds are a problem. If you can, put this HTML file on a web server that is part of your intranet so that you can get more space for saving the very long RSS feeds that exist.
The data is saved to the files on your local disk under "C:\Documents and Settings\(login)\UserData\...". The exact name of the folder and file may vary depending on the computer, to make these files "a little bit more secure". See MSDN for more details.
Loading the XML from an RSS feed
The XML
tag that is available in IE can be used to retrieve data by setting the src
attribute. After a while, the OnReadyStateChange
event will be thrown and the actual content of the RSS feed can be found in the XMLDocument
property of the XML
tag.
Big wish to Microsoft for IE
Using the Search bar has the disadvantage that the specific menu bar is also shown up. It would be great to have exactly the same behavior and feature without the menu bar by using another target name.
If the content of this bar comes exactly from the same site, it should be possible to detect if the bar is shown and provide access to the content, exactly the same way as it works with framesets.
Background: Some general words on "Building a navigation system"
For HTML programmers, the design of a navigation or site menu is a well known dilemma. If you have more than a few pages in your web application and want to give direct access to them from the start page, then you have the following choices.
Frames in framesets
You can use multiple frames of a frameset to separate a list of hyperlinks from the content of the application. With this approach, the navigation page stays inside the browser and need not be downloaded multiple times.
The bad thing about this is that the URL in the address bar never changes and the bookmarks for those pages may break the design of the web application.
Microsoft MSDN library uses this approach, and requires a bunch of tricks to be useful.
Reusable menu component
The other very common approach is to build a component that implements a menu system and to place it in every page that is requested by the user. Here, you will always have the right design, and the hyperlink in the address bar can be used for direct links.
The bad thing about this is that the amount of HTML-code that must be transferred over the network every time may be very large.
Navigation in a Sidebar / Explorer Bar
There is a third approach also used in this TinyRSS that is not very well known and also has some negative aspects, but solves both the problems of repeating menu code and the useless address bar. It uses a separate HTML page for the navigation code but does not put it inside a frameset but inside an Explorer bar.
Further reading
About the December 2005 Update
The December 2005 and January 2006 versions were necessary because the IE security fix #905915 that was published by Microsoft on 16.12.2005 breaks the feature of opening a page in the Search Panel by using window.open
with the target "_search". This feature is not a hack but is documented in the MSDN documentation, see here.
This bug avoids the original integration of the RSS reader into IE by just starting the URL so a setup that registers this version as an Explorer Bar was necessary.
I hope this will be fixed soon! You can still find the original version in the available TinyRss_all.zip file.
Updates
- 22.11.2005
- Made it more robust. Bug with parameterized RSS URLs was fixed and some error handling included.
- 31.12.2005
- Explorer Bar setup included.
- 28.01.2005
- 22.11.2006
- IE 7 installation instructions.
- Forced refresh added (Ctrl+click on "RSS" in title).
- RSS2.0 syntax added, better layout.