0

Google Chrome 拡張機能のページで見つかったメタデータを返そうとしています。background.js は、website.js ページにメタデータを要求します。ページがコンテンツを更新しているときにリクエストが行われるため、戻る前にデータが変更されていることを確認する必要があります。これが私のコードです:

var checkMeta = function(){
    var title = $(".playerBarSong").text();
    var artist = $(".playerBarArtist").text();
    var album = $(".playerBarAlbum").text();
    var art = $(".playerBarArt").attr("src");
    if (previousTitle != title || previousArtist != artist || previousAlbum != album || previousArt != art){
        previousTitle = title;
        previousArtist = artist;
        previousAlbum = album;
        previousArt = art;

        currentMeta.title = title;
        currentMeta.artist = artist;
        currentMeta.album = album;
        currentMeta.art = art;

        window.clearInterval(intervalId);
        sendResponse(currentMeta); //Does not return value to the extension
    }

};

chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse){
        if (request.request == "meta"){
            currentMeta = request.meta;

            intervalId = window.setInterval(checkMeta,250)
            //Some sort of callback?
        }
    }
);

バニラの JavaScript または jquery でのソリューションをいただければ幸いです。

4

2 に答える 2

1

checkMeta関数が について知らないようですsendResponse。1 つの解決策は、次のようにsendResponseグローバルにすることですwindow.sendResponse = sendResponse;checkMeta別の解決策は、次のように引数として関数に渡すことです。

 intervalId = window.setInterval( function(){ checkMeta(sendResponse);},250)

checkMeta定義を次のように変更します。

var checkMeta = function(sendResponse){

試してみます

于 2013-06-18T06:27:12.707 に答える