1

このチュートリアルを使用して RSS Fetcher 拡張機能を構築しようとしています -

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

しかし、これは少し古いもので、Google はすでにいくつかの変更を行っていると思います。そこにあるダウンロード用の拡張機能はまったく機能しません。私はそれを機能させるために多くのエラーを解決しましたが、これで立ち往生しています:

キャッチされていない TypeError: 未定義のメソッド '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);      

同じエラーですが、別のプロパティがあります:

キャッチされていない TypeError: 未定義のプロパティ 'onRequest' を読み取ることができません

PS質問する前にここで解決策を見つけようとしましたが、できませんでした。それを解決するための助けを待ってください。

4

1 に答える 1

2

chrome.extension.sendRequestchrome.runtime.sendMessageバックグラウンド スクリプトへのメッセージ パッシングに使用する必要があります。

完全な API は、 Chrome Message Passingで確認できます。

于 2013-03-26T15:50:22.943 に答える