0

我在谷歌浏览器扩展中使用 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 returned!' onRequest每当触发后台事件侦听器时。在内容脚本收到此消息后,它可以修改 DOM。

更简单的选择(但更有限)是对某些页面使用 javascript 的编程注入

于 2012-05-24T20:20:16.717 回答