Google гаджет Уникальный идентификатор - PullRequest
3 голосов
/ 19 декабря 2008

Как получить уникальный идентификатор гаджета Google из гаджета, добавленного на сайт iGoogle, с помощью Javascript?

Ответы [ 2 ]

4 голосов
/ 18 января 2009

Если вы пытаетесь получить доступ к идентификатору гаджета из JavaScript внутри самого гаджета, вы можете использовать __MODULE_ID__. Он автоматически заменяется сервером iGoogle с фактическим идентификатором модуля и используется в ряде стандартных библиотек в качестве общего параметра конструктора (см. Справочник по API гаджетов ).

Если вы используете API новых гаджетов (часть спецификации OpenSocial и в настоящее время доступно только в iGoogle в iGoogle Sandbox), тогда у вас есть другая опция: gadgets.Prefs.getModuleId()

2 голосов
/ 23 декабря 2008

Я не уверен на 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;
}
...