我正在尝试在我的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文件时,这非常有效。非常感谢任何帮助!
答案 0 :(得分:3)
根据 Manifest v2 "migration guidelines" ,您应该“删除标记中包含的JS代码并将其放在外部JS文件中”
根本不执行内联JS,因此将其放在外部JS文件中,然后将其导入background.html
或使用清单中scripts
属性的background
属性,例如:
"background": {
"scripts": [
"socket.io.js",
"background.js"
]
}
答案 1 :(得分: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'”
为我工作。
答案 2 :(得分:-3)
socket.io.js不是文件系统上的文件,它应该由您选择的服务器提供服务。在您的情况下,localhost:8080
。