- ベストアンサー
Google Feed APIを使い分けたい
- Google Feed APIを使用して、複数のURLを同一ページ内で使い分けたい方法を教えてください。
- 「<div id="feed"></div>」の部分をURLごとに変更し、Google Feed APIを使用して情報を表示したいです。
- 既存のコードではうまく実行されないため、試しにIDを指定して実行してみたのですが、うまくいきませんでした。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>> No.1 補足 <script type="text/javascript" src="http://www.google.com/jsapi?key=KEY"></script> <script type="text/javascript"> google.load("feeds", "1"); // myGoogleFeed関数宣言 function myGoogleFeed(settings) { var feed = new google.feeds.Feed(settings.url); feed.setNumEntries(settings.entries); feed.load(function () { return settings.callback.apply(settings.context || settings, arguments); }); return feed; } function initialize() { // myGoogleFeed使用例 myGoogleFeed({ url: 'http...', // URL entries: 3, // 件数 context: { id: 'feed1' }, // コールバック関数のthis値 callback: func // コールバック関数 }); myGoogleFeed({ url: 'http...', entries: 4, context: { id: 'feed2' }, callback: func }); function func(result) { if (!result.error) { var container = document.getElementById(this.id); // 処理 } } } google.setOnLoadCallback(initialize); </script> <div id = "feed1"></div> <div id = "feed2"></div> 上記が基本的な記述(使い方)になります。 initialize関数内だけで利用するなら、myGoogleFeed関数宣言もinitialize関数の中に入れて構わないです。 要は google.load("feeds", "1"); function initialize() { var feed = new google.feeds.Feed("rss_url"); feed.setNumEntries(5); feed.load(function(result) { if (!result.error) { var container = document.getElementById("feed"); } }); } google.setOnLoadCallback(initialize); この上手く実行されるinitialize関数の中身をmyGoogleFeed関数に移しただけですから、initialize関数の中で実行すればいいです。
その他の回答 (1)
- my--
- ベストアンサー率89% (91/102)
function myGoogleFeed(settings) { var feed = new google.feeds.Feed(settings.url); feed.setNumEntries(settings.entries); feed.load(function () { return settings.callback.apply(settings.context || settings, arguments); }); return feed; } // myGoogleFeed使用例 myGoogleFeed({ url: 'http...', // URL entries: 3, // 件数 context: { id: 'feed1' }, // コールバック関数のthis値 callback: func // コールバック関数 }); myGoogleFeed({ url: 'http...', entries: 4, context: { id: 'feed2' }, callback: func }); function func(result) { if (!result.error) { var container = document.getElementById(this.id); } } こんな感じで。 特に難しいことはやってないですけど、不明な点があれば補足下さい。
補足
何点かわからないところがあります。 まず google.load("feeds", "1"); google.setOnLoadCallback(myGoogleFeed); の記述ですが、これは function myGoogleFeed(settings) { の手前つまり google.load("feeds", "1"); google.setOnLoadCallback(myGoogleFeed); function myGoogleFeed(settings) { としておけばよろしいでしょうか? もうひとつ実際の使い方がよくわかりません。 <script type="text/javascript"> </script> の間に教えていただいた処理を記述し、表示したい箇所で <div id = "feed1"></div> <div id = "feed2"></div> とするとういうことでしょうか? しかし、上記方法は試してみましたが、うまくいきませんでした。
お礼
正常に動作させることができました。 すごく丁寧な回答ありがとうございました。 今後のプログラムに生かせそうです。