3

Javascript を使用して、iGoogle Web サイトに追加されたガジェットから一意の Google ガジェット ID を取得するにはどうすればよいですか?

4

2 に答える 2

4

ガジェット自体の中でJavaScriptからガジェットのIDにアクセスしようとしている場合は、を使用できます__MODULE_ID__。これは、実際のモジュールIDを持つiGoogleサーバーによって自動的に置き換えられ、多くの標準ライブラリで共通のコンストラクターパラメーターとして使用されます(ガジェットAPIリファレンスを参照)。

新しいガジェットAPI(OpenSocial仕様の一部であり、現在iGoogleサンドボックスのiGoogleでのみ利用可能)を使用している場合は、別のオプションがあります。gadgets.Prefs.getModuleId()

于 2009-01-17T21:05:02.723 に答える
2

おっしゃっている意味がよくわかりませんが、Google Gadgets の URL は次のようになっているようです: http://hosting.gmodules.com/ig/gadgets/file/unique_id/name.xml ...,そして、Google が JavaScript を完成させた後、他の人たちと一緒にこの URL を含む onclick 属性を持つ <a> タグを追加します。そのため、ページからすべての <a> タグ (クラス 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;
}
于 2008-12-23T13:45:13.257 に答える