如何使用Javascript从添加到iGoogle网站的小工具中获取唯一的Google小工具ID?
答案 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;
}