简单的 IGoogle 小工具






3.64/5 (6投票s)
一个简单的 iGoogle 小工具,用于显示 Expedia RSS 信息。
引言
这是一篇关于 iGoogle 小工具的简短文章。Gadgets API 使用起来很简单,但文档确实有些模糊。
背景
小工具是使用 IGoogle 框架 的迷你应用程序,可以存在于其他网站内部。 简而言之,它是一个位于 iFrame
中的页面。
创建你的第一个小工具有几个步骤
- 注册沙盒。 注意:应用程序在沙盒中的行为与在 IGoogle 主页上的行为不同(看起来它们使用不同的 JS 库)。
- 添加开发者工具。 这些工具将保护你的小工具免受缓存的影响。
- 使用 在线编辑器 或任何其他编辑器来创建你的小工具。
- 发布你的小工具.
使用代码
完整的 Gadget 代码可以在 这里 找到。
我决定创建一个小工具,用于显示来自 Expedia.com 的特价商品。 在 Google 上搜索了几分钟后,我找到了我的小工具的数据源 - Expedia RSS Feed。
这个小工具有两个展示部分
- 一个用于配置小工具的表单;
- 一个来自 feed 的条目列表;
<ModulePrefs
title="Travel Deals on Expedia"
description="Hot Travel Deals from Expedia.com. Cheap flights
and hotels, cruises and top deals."
title_url="http://www.expedia.com/daily/outposts/rss/expedia_rss.asp"
author="Maxim Kazitov"
author_email=mvkazit@tut.by
screenshot="http://www.yogageneration.com/~mvkazit/expedia/iexpedia/screen.jpg"
thumbnail="http://www.yogageneration.com/~mvkazit/expedia/iexpedia/thumbnail.gif"
directory_title="IG Expedia Hot Deals"
height="250"
width="250">
<icon>http://www.yogageneration.com/~mvkazit/expedia/iexpedia/icon.gif</icon>
<Require feature="setprefs"/>
<Require feature="dynamic-height"/>
</ModulePrefs>
在上面的代码中,我们正在设置未来小工具所需的所有设置,并在最后包含两个模块:“setprefs”和“dynamic-height”。 第一个模块允许我们以编程方式保存用户设置,第二个模块允许调整 IFrame
的高度(如果内容高度已更改)。
_IG_RegisterOnloadHandler(pgLoad);
function pgLoad()
{
//...................
}
pgLoad
函数将被调用,并且页面将完成加载过程。 实际上,IG 框架将在 body 的末尾添加以下行。
_IG_TriggerEvent("domload");
注意:看起来 “registerOnLoadHandler()
” 只能在沙盒中工作。
.................
var m_UsrPref = new _IG_Prefs(__MODULE_ID__);
m_UsrPref.getBool("hasCfg"))
m_UsrPref.set("hasCfg", true);
读取/写入设置很容易,但你必须先声明这些设置。
现在,我们想读取 RSS feed
_IG_FetchFeedAsJSON(buildURL(), parseResponse);
function parseResponse(obj)
{
var html = "";
if(obj && obj.Entry)
{
var n = obj.Entry.length;
for(var i=0; i<n; i++)
{
html+= buildEntryHTML(obj.Entry[i]);
}
}
rssRender(html);
}
框架将自动每隔 60 分钟左右刷新 feed。
注意:看起来 “gadgets.io.makeRequest()
” 只能在沙盒中工作。 一般来说,gadgets.io*
函数仅在开发环境中工作,并且只有 _IG_*
真正有效。
_IG_AdjustIFrameHeight();
此调用将调整 IFrame
的大小以适应内容高度(同样,不要尝试使用 adjustHeight
)。 现在,我们可以发布我们的小工具并 分享 给朋友。