gadgets.*
コンテンツ タイプが URL の場合、JavaScript コードで使用する方法はありますか?
2 に答える
OpenSocial 仕様 (少なくとも 0.8 以降) によると、要求された機能の JavaScript ライブラリへの相対パス リンクをコンテンツ URL パラメーターで渡す必要があります。詳細については、OpenSocial 仕様でキーワード「libs」を検索してください。
問題は、URL で指定されたパスが絶対パスではなく相対パスであり、このパラメーターを追加するベース URL を知る必要があることです。ここのディスカッション スレッドでは、「https://www-gm-opensocial.googleusercontent.com/gadgets/js/」というベース URL を使用し、「libs」の値をそのまま追加することを提案していますが、それを確認できていません。 . iGoogle で OpenSocial ガジェットのライブラリを取得するために使用したコード (jQuery をサポート) は次のとおりです。
var libsMatch = window.location.search.match(/[?&]libs=([^&]*)/);
if (libsMatch) {
var libArray = libsMatch[1].split(",");
$.each( libArray, function(i, val) {
$.ajax( {
url: "http://www.google.com/ig/f/" + val,
dataType: 'script'
} );
} );
}
ただし、すべての API がこの方法で利用できるわけではないことに注意してください。たとえば、gadgets.io.* はこの方法では有効にできず、他の API はテストする必要があります。
プロキシされたコンテンツ機能を使用できます。そうすれば、独自のサーバーから取得したコンテンツから gadgets.* API にアクセスできます。
<Module>
<ModulePrefs title="My App">
<Require feature="opensocial-0.9"/>
</ModulePrefs>
<Content view="canvas" href="http://www.example.com/myapp/canvas/index.html">
</Content>
</Module>