0

我正在尝试从 chrome 扩展中发布到本地主机服务器,但它似乎不起作用。

这是我的文件:

显现:

{
"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 中使用它。还有其他方法吗?)

背景.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..."); }
            );
        }
  })
};

现在,alert("发送前:" + strVar); 执行,所以直到这里我做得很好。但是 .post 还没有完成。

任何的想法?

谢谢,

4

1 回答 1

0

如果你调试你的后台页面,你会发现有一个安全错误。您正在尝试从远程源 (ajax.googleapis.com) 加载 javascript,而您尚未在清单文件中明确允许它。而且没有jQuery,$.post无法运行。您需要放宽默认的内容安全策略(确保通过 https 加载 jQuery)。

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

于 2012-11-02T07:08:20.077 回答