2

我正在尝试在我的 Chrome 扩展程序中使用 Socket.io,但由于某种原因,我无法让它工作。以下是我在 background.html 中的代码:

<!doctype html>
<html>
<head>
    <script src='socket.io.js'></script>
    <script>
    var socket = io.connect('http://localhost:8080/');

    chrome.browserAction.onClicked.addListener(function(tab) {
        socket.send('hi');
    });
    </script>
</head>
<body>
</body>

而我的 manifest.json 我有以下加载后台页面和一些权限:

"permissions": [
"http://*/",
"http://*/*"
],

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

但是,这不起作用。加载扩展时,它应该连接到 Socket.io 服务器,但它没有。我无法弄清楚是什么原因造成的。当我简单地运行 background.html 文件时,这非常有效。任何帮助是极大的赞赏!

4

3 回答 3

3

根据Manifest v2 “迁移指南”,您应该“删除标签中包含的 JS 代码并将其放置在外部 JS 文件中”

内联 JS 根本不执行,所以将其放在外部 JS 文件中,然后将它们导入background.html或使用清单scripts中的属性的属性,例如:background

"background": {
    "scripts": [
        "socket.io.js",
        "background.js"
    ]
}
于 2013-11-04T06:26:03.123 回答
0

尝试使用它的 CDN - https://cdn.socket.io/socket.io-1.0.6.js,并在 manifest.json 文件中添加

"content_security_policy": "script-src 'self' https://cdn.socket.io ; object-src 'self'"

为我工作。

于 2014-08-07T22:38:06.690 回答
-4

socket.io.js 不是文件系统上的文件,它应该由您选择的服务器提供服务。在你的情况下,localhost:8080.

于 2013-11-04T00:26:04.047 回答