Как получить уникальный идентификатор гаджета Google из гаджета, добавленного на сайт iGoogle, с помощью Javascript?
Если вы пытаетесь получить доступ к идентификатору гаджета из JavaScript внутри самого гаджета, вы можете использовать __MODULE_ID__. Он автоматически заменяется сервером iGoogle с фактическим идентификатором модуля и используется в ряде стандартных библиотек в качестве общего параметра конструктора (см. Справочник по API гаджетов ).
__MODULE_ID__
Если вы используете API новых гаджетов (часть спецификации OpenSocial и в настоящее время доступно только в iGoogle в iGoogle Sandbox), тогда у вас есть другая опция: gadgets.Prefs.getModuleId()
gadgets.Prefs.getModuleId()
Я не уверен на 100%, что вы имеете в виду, но кажется, что URL для гаджетов Google выглядит примерно так: http://hosting.gmodules.com/ig/gadgets/file/unique_id/name.xml..., и после того, как Google закончит работу со своим JavaScript, они добавят -Tag с атрибутом onclick, содержащим среди других этот URL. Поэтому, возможно, вы можете попытаться получить все теги (с классом delbox) со страницы и использовать регулярное выражение в атрибуте onclick для получения уникального идентификатора. Вам просто нужно убедиться, что ваш код выполняется после 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; }