// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Feed var feedUrl = 'http://news.google.com/?output=rss'; // The XMLHttpRequest object that tries to load and parse the feed. var req; function main() { req = new XMLHttpRequest(); req.onload = handleResponse; req.onerror = handleError; req.open('GET', feedUrl, true); req.send(null); } // Handles feed parsing errors. function handleFeedParsingFailed(error) { var feed = document.getElementById('feed'); feed.className = 'error'; feed.innerText = 'Error: ' + error; } // Handles errors during the XMLHttpRequest. function handleError() { handleFeedParsingFailed('Failed to fetch RSS feed.'); } // Handles parsing the feed data we got back from XMLHttpRequest. function handleResponse() { var doc = req.responseXML; if (!doc) { handleFeedParsingFailed('Not a valid feed.'); return; } buildPreview(doc); } // The maximum number of feed items to show in the preview. var maxFeedItems = 5; // Where the more stories link should navigate to. var moreStoriesUrl; function buildPreview(doc) { // Get the link to the feed source. var link = doc.getElementsByTagName('link'); var parentTag = link[0].parentNode.tagName; if (parentTag != 'item' && parentTag != 'entry') { moreStoriesUrl = link[0].textContent; } // Setup the title image. var images = doc.getElementsByTagName('image'); var titleImg; if (images.length != 0) { var urls = images[0].getElementsByTagName('url'); if (urls.length != 0) { titleImg = urls[0].textContent; } } var img = document.getElementById('title'); // Listen for mouse and key events if (titleImg) { img.src = titleImg; if (moreStoriesUrl) { document.getElementById('title_a').addEventListener('click', moreStories); document.getElementById('title_a').addEventListener('keydown', function(event) { if (event.keyCode == 13) { moreStories(event); }}); } } else { img.style.display = 'none'; } // Construct the iframe's HTML. var iframe_src = '