1

我正在尝试使用本教程构建 RSS Fetcher 扩展 -

http://www.lifehacker.com.au/2011/11/how-to-build-a-chrome-extension

但我想这有点老了,谷歌已经做了一些改变。那里的扩展下载根本不起作用。我已经解决了许多错误以使其正常工作,但我陷入了困境:

未捕获的类型错误:无法调用未定义的方法“sendRequest”

这是我的popup.html文件的错误所在。

function fetch_feed() {
chrome.extension.sendRequest({'action' : 'fetch_feed', 'url' : 'http://spfc.terra.com.br/rss/news.xml'}, 
    function(response) {
        display_stories(response);
        }
    );
}

function display_stories(feed_data) {
    var xml_doc = $.parseXML(feed_data);
    $xml = $(xml_doc);
    var items = $xml.find("item");
    $('#popup').html('<img src="logo.png" id="logo" onclick="open_item(\'http://spfc.terra.com.br/\'); window.close();" /><br clear="all" />');
    items.each(function(index, element) {
        var post = parse_post(element);
        var item = '';
        var class2 = '';
        if (index >= localStorage['unread_count']) {
            // // console.log('visited');
            item += '<div class="post read">';
        }
        else {
            item += '<div class="post">'
        }
        item += '<span class="tag">' + post.tag + '</span>\
                    <a href="' + post.url + '">\
                        <div id="' + post.id + '" class="item" onclick="open_item(\'' + post.url + '\');">\
                            <img src="' + post.img + '" width="107" height="60" />\
                            <h4>' + post.title + '</h4>\
                            <span class="description">' + post.description + '...</span>\
                        </div>\
                    </a>';
        item += '</div>';
        $('#popup').append(item);
    });
}

顺便说一句,我在background.html中也有一个错误,在这部分:

function fetch_feed(url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(data) {
      if (xhr.readyState == 4) {
        if (xhr.status == 200) {
          var data = xhr.responseText;
          callback(data);
        } else {
          callback(null);
        }
      }
    }
    // Note that any URL fetched here must be matched by a permission in
    // the manifest.json file!
    xhr.open('GET', url, true);
    xhr.send();
}   


function onRequest(request, sender, callback) {
    if (request.action == 'fetch_feed') {
      fetch_feed(request.url, callback);
    }
}


chrome.extension.onRequest.addListener(onRequest);      

是同样的错误,但有另一个属性:

未捕获的类型错误:无法读取未定义的属性“onRequest”

PS在询问之前我已经尝试在这里找到解决方案并且不能。等待一些帮助来解决它。

4

1 回答 1

2

chrome.extension.sendRequest已弃用,您应该将chrome.runtime.sendMessage其用于将消息传递到后台脚本

您可以在以下位置查看完整的 api:Chrome 消息传递

于 2013-03-26T15:50:22.943 回答