2

我正在尝试使用 div 填充功能在我的网站中实现一些提要。以前,我的页面有相同的 JavaScript 代码块(每个提要一个),但为了成为一名优秀(或更好)的编码员,我决定将重复的代码粘贴到外部脚本文件中并使用不同的参数运行它反而。

不幸的是,提要拒绝加载我的新实现,而且我的想法已经不多了。我根据用户 ndp 在问题 9662168中的有趣建议构建了我的回调函数。

因此,我的外部脚本文件中有以下两个函数(为简单起见,对代码进行了少量编辑):

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);
}

这些函数在我的 HTML 中调用如下:

<script>
    var callback = populateRSSFeed('feed-list-wrapper-1');
    initializeRSSFeed(callback, 'http://rss.cnn.com/rss/cnn_topstories.rss');
</script>

我收到的错误消息让我认为在提要加载阶段出了点问题,但我无法确定原因。

Uncaught TypeError: Cannot read property 'Feed' of undefined

你们有什么感想?

4

1 回答 1

1

您似乎没有使用setOnLoadCallback等待 Google 脚本加载。这可以解释为什么google.feeds是未定义的(直接导致您看到的错误)。

请尝试改用此脚本(我只是按照开发人员指南中的“Hello World”示例进行操作)。

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);
于 2012-09-04T21:13:01.013 回答