J'essaie d'implémenter quelques flux dans mon site à l'aide d'une fonction de partage de div. Auparavant, j'avais des blocs de code JavaScript identiques dans ma page (un pour chaque flux), mais dans l'intérêt d'être un codeur bon (ou meilleur), j'ai décidé de coller le code répétitif dans un fichier de script externe et de l'exécuter avec des paramètres variables au lieu.
Malheureusement, les flux refusent de charger avec ma nouvelle mise en œuvre, et je ne me souviens pas des idées. J'ai structuré ma fonction de rappel en fonction des suggestions intéressantes de l'utilisateur ndp dans la question 9662168 .
Donc, j'ai deux fonctions dans mon fichier de script externe (rédaction de code mineur pour simplifier):
function populateRSSFeed(divID) { var targetDiv = document.getElementById(divID); return function callback(result) { if (!result.error) { var container = document.getElementById(targetDiv); var list = document.createElement('ul'); <snip: div-population code here> container.appendChild(list); } else alert('Error fetching feeds!'); } } function initializeRSSFeed(callback, targetFeed) { google.load('feeds','1'); var feed = new google.feeds.Feed(targetFeed); var numEntries = 3; feed.setNumEntries(numEntries); feed.load(callback); }
Ces fonctions sont appelées comme suit dans mon HTML:
<script> var callback = populateRSSFeed('feed-list-wrapper-1'); initializeRSSFeed(callback, 'http://rss.cnn.com/rss/cnn_topstories.rss'); </script>
Le message d'erreur que je reçois me fait penser que quelque chose ne va pas au stade de l'alimentation, mais je ne peux pas déterminer la cause.
Uncaught TypeError: Cannot read property 'Feed' of undefined
Qu'en pensez-vous?
Il semble que vous n'utilisez pas setOnLoadCallback
pour attendre que les scripts Google setOnLoadCallback
chargés. Cela expliquerait pourquoi google.feeds
est indéfini (résultant directement de l'erreur que vous voyez).
Essayez d'utiliser ce script à la place (je viens de suivre l'exemple «Bonjour Monde» dans le Guide des développeurs ).
google.load('feeds','1'); function onGoogleReady() { var callback = populateRSSFeed('feed-list-wrapper-1'); initializeRSSFeed(callback, 'http://rss.cnn.com/rss/cnn_topstories.rss'); } google.setOnLoadCallback(onGoogleReady);