65.9K
CodeProject 正在变化。 阅读更多。
Home

TinyRSS,Internet Explorer 的 RSS 阅读器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (24投票s)

2005年2月16日

8分钟阅读

viewsIcon

283167

downloadIcon

3041

TinyRSS 是一个非常小巧但功能强大的 RSS 阅读器,可直接在 Internet Explorer 中运行。

引言

TinyRSS 是一个非常小巧但功能强大的 RSS 阅读器,可在 Internet Explorer 中运行。市面上有一些不错的阅读器。大多数都是以新程序的形式实现的,而不是在浏览器内部。在使用 Firefox 一段时间后,我发现将 RSS 书签添加到书签侧边栏是一项非常实用的功能。

这是一个仅用 HTML 和 JavaScript 实现的 RSS Explorer Bar,大小不到 15 KB。与 IE 7 / Vista 内置解决方案相比,它的优点在于,即使博客仅在 RSS 文件中提供链接,这些链接仍然可以使用,并且博客的内容会以其原始布局显示。

从技术角度来看,此实现展示并结合了一些技术,特别是客户端用户特定数据的集成,这些技术有助于构建基于客户端 JavaScript 和 HTML 的应用程序。

关于此更新

TinyRss 已经稳定运行很长时间了,IE 7 也已发布,以下是使用 TinyRss 配合 IE 7 的说明。

1. 启用搜索面板

在“Internet 选项”的高级设置中有一个新的复选框,名为“允许网站使用搜索窗格*”。您必须启用此选项才能使 _search 目标生效。

2. 启用脚本

如果您从本地计算机加载 TinyRss.htm 文件,您还必须在“Internet 选项”的高级设置中启用“允许活动内容在我的计算机上的文件中运行”。此选项可能已关闭,届时 JavaScript 将无法正常工作。

3. 启用从 RSS 源读取数据

如果您从本地计算机的某个网站加载 TinyRss.htm 文件,您必须允许浏览器加载您指定的网站的 RSS 数据。这可以通过在“Internet 选项”的安全设置的“其他”部分中启用“跨域访问数据源”选项来完成。请务必选择正确的区域:不要在“Internet”区域中启用此选项,而是将该网站添加到“受信任的站点”列表,并在该区域中启用此选项。

一些新功能

  • 布局已略有更改。
  • RSS 数据会缓存几分钟。您可以通过按住 Ctrl 键单击标题中的“RSS”来强制重新加载 RSS 数据。
  • 已改进 RSS 源的解析,以支持更多典型的 RSS 格式。

TinyRSS 快速入门

您可以将“源代码和项目”文件下载到计算机上的任何位置,然后启动 TinyRSS.htm 文件,仅此而已。您也可以从我的网站启动。

TinyRSS Explorer Bar for IE 6.x 的设置

通过使用 Microsoft Internet Explorer 的 Explorer Bar 插件功能,现在可以提供一个变通方法和一个更方便的版本来避免此 bug。ZachJ 之前曾对此发表过评论。JavaScript 代码已进行了一些小的修改。

我提供了一个小型安装程序包,您可以从 zip 文件中找到它,以便您轻松安装 TinyRSS。我还添加了完整的 Visual Studio 项目,以便您可以自行构建或在任何地方重用它。

设置程序还会添加一个图标,可以添加到 IE 的图标栏以激活 TinyRSS Explorer Bar。

只需下载 TinyRss.zip 文件,解压缩并运行其中包含的 MSI 设置文件。

不妨试试

要启动此 RSS 阅读器,您只需下载附加的 zip 文件,解压缩唯一的 TinyRss.htm 文件并运行即可。就是这么简单。

在不带任何参数启动 TinyRSS 阅读器时,它还会打开一个侧边栏,其中包含您添加的所有 RSS 源以及每个条目的超链接。

添加新源、删除源或重新排列源

单击橙色标题栏中的“设置”命令,在主窗口中打开管理页面

在这里,您可以将新的 URL 添加到 RSS 源。使用 [^][v] 链接更改源的顺序。使用 [+][-] 链接,您可以更改在页面加载时显示或隐藏源中的链接。

您可以单独删除 RSS 源,或一次性删除所有源。当然,删除时会有提示。

实现方法

打开 Explorer Bar

实现 Explorer Bar 可能是一件复杂的事情。通常,您需要实现 COM 接口并将其注册到本地注册表中。

此实现采用了另一种方法,通过重用搜索栏。通过在超链接标签中指定“_search”作为目标窗口名称,或使用 window.open 函数,可以在搜索栏中打开特定内容。通过这个小技巧,您可以将任何 HTML 并排显示在主窗口旁边。

window.open("?mode=list", "_search");

保存您最喜欢的 RSS 源列表

在 IE 中,有一个内置功能称为 UserData 行为,它允许网页将一些数据保存在用户的本地配置文件中,以便以后重新拾取。

<span id="feeds" 
  style="display: none; behavior: url(#default#userdata)">
</span>

通过使用 behavior CSS 属性,将内置的 UserData 功能添加到 HTML 对象。通过指定此项,“feeds”对象现在具有更多可用方法,允许将少量 XML 格式的数据加载和保存到本地文件系统。

var feedStore = document.getElementById("feeds");
feedStore.load("RssStore");
var xDoc = feedStore.XMLDocument;

TinyRSS 使用 UserData 行为两次。一次用于保存所有应显示的 RSS 源的列表,另一次用于将每个 RSS 源检索到的 RSS 数据保存 30 分钟,以避免过于频繁的数据请求。

UserData 可保存的数据量有限,因此过多的源或过大的源会成为问题。如果可能,请将此 HTML 文件放在 intranet 的 Web 服务器上,以便您可以获得更多空间来保存非常长的 RSS 源。

数据保存在您本地磁盘上的文件中,路径为“C:\Documents and Settings\(login)\UserData\...”。文件夹和文件的确切名称可能因计算机而异,以使这些文件“更安全一些”。有关更多详细信息,请参阅MSDN

从 RSS 源加载 XML

IE 中可用的 XML 标签可以通过设置 src 属性来检索数据。一段时间后,将引发 OnReadyStateChange 事件,并且实际的 RSS 源内容可以在 XML 标签的 XMLDocument 属性中找到。

对 Microsoft IE 的巨大期望

使用搜索栏的缺点是也会显示特定的菜单栏。如果能通过使用另一个目标名称,在不显示菜单栏的情况下获得完全相同的行为和功能,那就太好了。

如果此栏的内容完全来自同一站点,则应该能够检测到该栏是否显示,并提供对内容的访问,就像 framesets 一样。

背景:“构建导航系统”的一些一般性说明

对于 HTML 程序员来说,设计导航或站点菜单是一个众所周知的难题。如果您的 Web 应用程序中有多个页面,并且想从起始页直接访问它们,那么您有以下选择。

Framesets 中的 Frames

您可以使用 frameset 的多个 frame 来分隔超链接列表和应用程序内容。通过这种方法,导航页面会保留在浏览器中,并且无需多次下载。

糟糕的是,地址栏中的 URL 永远不会改变,并且这些页面的书签可能会破坏 Web 应用程序的设计。

Microsoft MSDN 库使用了这种方法,并且需要一系列技巧才能使其有用。

可重用菜单组件

另一种非常常见的方法是构建一个实现菜单系统的组件,并将其放置在用户请求的每个页面上。这样,您将始终拥有正确的布局,并且地址栏中的超链接可用于直接链接。

糟糕的是,每次通过网络传输的 HTML 代码量可能非常大。

在侧边栏 / Explorer Bar 中进行导航

还有第三种方法,TinyRSS 也使用了这种方法,但不太为人所知,并且也存在一些缺点,但它解决了重复菜单代码和无用的地址栏这两个问题。它使用一个单独的 HTML 页面进行导航代码,但没有将其放入 frameset 中,而是放入 Explorer bar 中。

深入阅读

关于 2005 年 12 月的更新

2005 年 12 月和 2006 年 1 月的版本是必要的,因为 Microsoft 于 2005 年 12 月 16 日发布的 IE 安全修复程序 #905915 会破坏通过 window.open 并将目标设置为“_search”在搜索面板中打开页面的功能。此功能并非 hack,而是记录在 MSDN 文档中,请参见此处

此 bug 阻止了通过直接启动 URL 来实现 RSS 阅读器与 IE 的原始集成,因此需要一个将此版本注册为 Explorer Bar 的设置。

我希望这个问题能尽快得到修复!您仍然可以在提供的 TinyRss_all.zip 文件中找到原始版本。

更新

  • 22.11.2005
    • 提高了健壮性。修复了带有参数化 RSS URL 的 bug,并包含了一些错误处理。
  • 31.12.2005
    • 包含 Explorer Bar 设置。
  • 28.01.2005
    • 修复了安装程序 bug。
  • 22.11.2006
    • IE 7 安装说明。
    • 添加了强制刷新(Ctrl+单击标题中的“RSS”)。
    • 添加了 RSS2.0 语法,改进了布局。
© . All rights reserved.