2012-11-01 56 views
0

我試圖從Chrome擴展中發佈到localhost服務器,它似乎不工作。在Chrome擴展中使用JQuery的post函數

這裏是我的文件:

清單:

{ 
"name": "Send to server", 

"version": "1.1", 

"background": { "page": "background.html"}, 

"permissions": ["experimental", "tabs", "<all_urls>"], 

"browser_action": {"name": "Send to server", "default_icon": "icon.png", "default_popup":"popup.html" }, 

"icons": { "16": "16.png" }, 

"manifest_version": 2 

} 

的background.html是非常短暫的,它只是指向「http://ajax.googleapis.com/ajax/libs/jquery /1.5/jquery.min.js「 和 」background.js「。 (我用它只是爲了能夠包括jQuery和在background.js使用它有另一種方式吧。?)

background.js:

chrome.tabs.onUpdated.addListener(SendToServer); 

function SendToServer(tabId, changeInfo, tab) { 
chrome.tabs.getSelected(null, function(tab) { 

    if (changeInfo.status === 'complete'){ 
     chrome.experimental.infobars.show({ 
       tabId: tab.id, 
       path: "infobar.html" 
      }); 

      var strVar = "A page was loaded"; 

      alert("Before sending: " + strVar); 

      $.post("http://localhost/MyDomain", {var: strVar}, 
       function(strVar) { alert("Sending..."); } 
      ); 
     } 
    }) 
}; 

現在,警報(「在發送前:「+ strVar);被執行,所以在這裏我做得很好。但是.post沒有完成。

有什麼想法?

謝謝,

回答

0

如果你調試你的背景頁面,你會發現有一個安全錯誤。您正試圖從遠程源(ajax.googleapis.com)加載JavaScript,而您尚未在清單文件中明確允許該JavaScript。沒有jQuery,$.post無法運行。你需要放鬆默認Content Security Policy(一定要通過https加載jQuery)。

如果事實上,你應該實際上在這種特殊情況下做的,是包含在擴展jQuery的文件,並在相應backtround.html加載它。擴展程序不是網站,與簡單硬盤提取相比,遠程調用花費了大量時間。另外,如果沒有互聯網連接,使用遠程JavaScript文件會使分機無法使用/不穩定。

+0

我跟着你的第二條建議,這顯然是推薦的建議,它的工作原理。謝謝! – Subway