if (!result.error) {……resultは、受け取ったXMLデータのテキストがただずらずらと保管されているのではなく、オブジェクトになっています。この中に、必要な情報が整理され保管されているのです。データが正しく受け取れたかどうかは「error」プロパティでチェックできます。!result.errorをチェックすることで、エラーがない場合にのみ処理を実行させることができます。
for (var i = 0; i < result.feed.entries.length; i++) {……}result内の「feed」というオブジェクトに、取得したフィード情報がまとめられています。個々のデータ(「エントリー」と呼ばれる、各記事の情報をまとめたもの)は「entries」というプロパティに配列として保管されています。ですから、繰り返しを使い、ここから順にエントリーのオブジェクトをとり出し、そこから情報を調べていけばよいわけです。
var entry = result.feed.entries[i];それを行っているのが、この部分です。まず、entries配列からエントリーのオブジェクトをとり出しておきます。そしてcreateElementで新たな<div>タグのDOMオブジェクトを作って、エントリーのタイトルをその中に組み込みます。エントリーのタイトルは、「entry.title」というように、エントリーオブジェクトのtitleプロパティで取り出せます。
var div = document.createElement("div");
div.innerText = entry.title;
container.appendChild(div);
google.load("feeds", "1",{"callback":OnLoad});↓
google.setOnLoadCallback(OnLoad);
google.load("feeds", "1",{"callback":OnLoad});こんな具合に、google.loadを実行する際、第3引数として{"callback":OnLoad}という連想配列を渡してやります。これで、ライブラリの読み込みが完了したら自動的にOnLoadを実行させることができます。つまり、setOnLoadCallbackは不要となるのです。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Sample</title> <style> h1 {font-size: 14pt; font-weight:bold; background-color:#DDF; padding:3px;} </style> <script src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("feeds", "1"); google.setOnLoadCallback(OnLoad); function OnLoad() { var feed = new google.feeds.Feed ("http://feeds.feedburner.com/GoogleJapanBlog"); feed.load(feedLoaded); } function feedLoaded(result) { if (!result.error) { var container = document.getElementById("container"); container.innerHTML = ''; for (var i = 0; i < result.feed.entries.length; i++) { var entry = result.feed.entries[i]; var div = document.createElement("div"); div.innerText = entry.title; container.appendChild(div); } } } </script> </head> <body> <h1>Google Feed API</h1> <p>Google Japan Blogの新着記事</p> <div id="container">Loading...</div> </body> </html>
<< 前へ | 次へ >> |