Google小工具唯一ID

时间:2008-12-19 01:29:40

标签: javascript google-gadget

如何使用Javascript从添加到iGoogle网站的小工具中获取唯一的Google小工具ID?

2 个答案:

答案 0 :(得分:4)

如果您尝试在小工具本身内从JavaScript访问小工具的ID,则可以使用__MODULE_ID__。这将由具有实际模块ID的iGoogle服务器自动替换,并在许多标准库中用作公共构造函数参数(请参阅Gadgets API Reference)。

如果您使用的是new gadgets API(OpenSocial规范的一部分,目前仅在iGoogle沙盒中的iGoogle上提供),那么您还有另一种选择:gadgets.Prefs.getModuleId()

答案 1 :(得分:2)

我不是100%确定你的意思,但似乎Google小工具的网址是这样的:http://hosting.gmodules.com/ig/gadgets/file/unique_id/name.xml ...,在Google完成他们的JavaScript后,他们会添加带有onclick属性的< a> -tag,其中包含amonst其他此URL。 因此,您可以尝试从页面中获取所有< a> -tags(带有类delbox),并使用onclick属性上的正则表达式来获取唯一ID。您只需要确保您的代码在Google之后执行。

这样的事情可以起作用(未经测试):

/**
 * Grabs the id of a Google Gadget from an iGoogle page.
 *
 * @param name the name of the targeted Google Gadget. If omitted the first
 *             Gadget is used
 * @return the id of the targeted Google Gadget or null if it could not be found
 */
function grab_id (name) {
    var links = document.getElementsByClass("delbox");
    var url = "http://hosting.gmodules.com/ig/gadgets/file/";
    var id_length = 21;
    var regex = url + "[\d]{" id_length} + "}/" + name;
    for (var i = 0; i < links.length; i++) {
        var match = links[i].getAttribute("onclick").match(regex);
        if (match) {
            return match.substring(url.length+1, url.length+1+id_length);
        }

    }
    return null;
}