google feed apiを使い分けたい
google ajax feed apiですが、下記コードを書いて
"rss_url"部分を引数にして同一ページ内でURLの違うものを複数
使用したいのですが、やり方がわかりません。
理想は<div id = "feed"></div>の
id = ""の部分を変更してURLごとに使い分けたいのですが、
どうすればいいでしょうか?
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);
このコードだと<div id = "feed"></div>を記述すればうまく実行されます。
試しに
google.load("feeds", "1");
function initialize(rss_url, id) {
var feed = new google.feeds.Feed(rss_url);
feed.setNumEntries(5);
feed.load(function(result) {
if (!result.error) {
var container = document.getElementById(id);
}
});
}
google.setOnLoadCallback(initialize);
var test = new MyRssReader("rss_url", "test1");
として
<div id = "test1"></div>としてみましがたうまくいきませんでした。
投稿日時 - 2012-01-19 14:12:14
>> 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関数の中で実行すればいいです。
投稿日時 - 2012-01-21 13:40:22
正常に動作させることができました。
すごく丁寧な回答ありがとうございました。
今後のプログラムに生かせそうです。
投稿日時 - 2012-01-22 10:30:28
このQ&Aは役に立ちましたか?
0人が「このQ&Aが役に立った」と投票しています
回答(2)
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);
}
}
こんな感じで。
特に難しいことはやってないですけど、不明な点があれば補足下さい。
投稿日時 - 2012-01-20 10:14:33
何点かわからないところがあります。
まず
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>
とするとういうことでしょうか?
しかし、上記方法は試してみましたが、うまくいきませんでした。
投稿日時 - 2012-01-21 08:25:43