在chrome扩展中使用JQuery的post函数

时间:2012-11-01 23:12:40

标签: jquery google-chrome-extension

我正在尝试从Chrome扩展程序中发布到localhost服务器,但它似乎无法正常工作。

以下是我的文件:

清单:

{
"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没有完成。

有什么想法吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

如果您调试后台页面,您会发现存在安全性错误。您正尝试从远程源(ajax.googleapis.com)加载javascript,而您尚未在清单文件中明确允许此操作。没有jQuery,$.post无法运行。您需要放宽默认Content Security Policy(确保通过https加载jQuery)。

事实上,在这种特定情况下你应该实际做的是在你的扩展中包含jQuery文件并在backtround.html中相应地加载它。扩展不是一个网站,与简单的HDD获取相比,远程调用需要花费大量时间。此外,当没有互联网连接时,使用远程javascript文件会使扩展无法使用/不稳定。