0

GoogleChrome拡張機能でJSONPを使用しています。それを機能させるために、私は追加しなければなりませんでした

chrome.extension.onRequest.addListener(onRequest);

次に、次のようにリクエストします。

var jsonpURL;
$(document).ready(function(){
   /* i make the "someurl" here from a div's content */
   jsonpURL="someurl";
   chrome.extension.sendRequest({action:'getJSON',url:jsonpURL});
});

リスナーで、ページのdivを非表示にします

function onRequest(request, sender, callback) {
    if (request.action == 'getJSON') {
        $.getJSON(request.url, function(data){
                // HIDE SOME DIV
        });
    }    
}

質問:

関数で元のページのコンテンツにアクセスするにはどうすればよいonRequestですか?または、まったくできない場合、リクエストの結果に応じていくつかのdivを非表示にするにはどうすればよいですか?jqueryセレクターを試してみたところ、元のページではなく、bg.htlmに到達していることがわかりました。

4

1 に答える 1

1

JSONP リクエストが返された後に変更するページにコンテンツ スクリプトを追加する必要があります。このスクリプトは、挿入先のページの DOM を変更できます。コンテンツ スクリプトが配置された後、メッセージを使用してバックグラウンド ページとコンテンツ スクリプトの間で通信できます。つまり、基本的に、 「ok jsonp retured!」というメッセージを送信する必要があります。バックグラウンド イベント リスナーonRequestが起動されるたびに。コンテンツ スクリプトがこのメッセージを受け取ると、DOM を変更できます。

さらに単純なオプション (より限定的) は、JavaScriptのプログラムによるインジェクションをページに使用することです。

于 2012-05-24T20:20:16.717 に答える