2012-05-24 74 views
0

我在google chrome擴展中使用JSONP。 爲了使它的工作,我不得不添加chrome.extension.onRequest監聽器達到原始內容

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}); 
}); 

我想隱藏頁面上的一些格

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

問題:

我怎麼能在達到原頁面的內容函數?或者如果我不能,我怎麼能隱藏一些div取決於請求的結果? 我試過jQuery選擇器,並發現我到達bg.htlm,而不是原始頁面。

回答

1

您需要將content script添加到您希望在JSONP請求返回後修改的頁面。這個腳本將能夠修改它被注入的頁面的DOM。內容腳本到位後,您可以使用消息在後臺頁面和內容腳本之間進行通信。所以基本上,你需要做的是send a message'ok jsonp回覆!'每當後臺事件監聽器onRequest被觸發。內容腳本收到此消息後,可以修改DOM。

更簡單的選項(但更有限)是在頁面中使用javascript的Programmatic injection

+1

感謝您的幫助,它的工作原理非常棒:) 感謝你,我做了一些更多的研究。 我昨天開始開發擴展,學習jsonp和一些更多的JavaScript,我的代碼就像waaaat? 我從內容腳本發出了請求,不能真正理解我在做什麼:D 現在它是有道理的!內容腳本從信息中獲取info->消息到背景頁面 - >在回調過程中使得jsonp - > info - >迴應內容腳本 - >在頁面上做出更改!!!!!!!!! !謝謝 :) –