Javascript を使用して、iGoogle Web サイトに追加されたガジェットから一意の Google ガジェット ID を取得するにはどうすればよいですか?
2 に答える
ガジェット自体の中でJavaScriptからガジェットのIDにアクセスしようとしている場合は、を使用できます__MODULE_ID__
。これは、実際のモジュールIDを持つiGoogleサーバーによって自動的に置き換えられ、多くの標準ライブラリで共通のコンストラクターパラメーターとして使用されます(ガジェットAPIリファレンスを参照)。
新しいガジェットAPI(OpenSocial仕様の一部であり、現在iGoogleサンドボックスのiGoogleでのみ利用可能)を使用している場合は、別のオプションがあります。gadgets.Prefs.getModuleId()
おっしゃっている意味がよくわかりませんが、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;
}