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

マニフェスト v2の 「移行ガイドライン」によると、 「タグ内に含まれる JS コードを削除し、外部 JS ファイル内に配置する」必要があります。

インライン JS はまったく実行されないため、外部 JS ファイルに配置してから、それらをインポートするか、マニフェストの属性の属性をbackground.html使用します。scriptsbackground

"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 に答える