无法连接 JS 脚本 Chrome 扩展程序



你好呀!在将socket.io.js添加到chrome扩展程序中时,我有问题,它进展不顺利!我尝试过这样的

var script = document.createElement('script');
script.src = 'socket.io.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script); 

但是它不起作用,它仅连接在HTML上(我在Dev Tools网络中看到),但是控制台仍然说未介绍的Reference referencterror:io未定义。我该怎么办?

代码:subest.json

{
  "name": "Test",
  "version": "0.0.1",
  "description": "Test app",
  "permissions": [ "background", "tts", "storage" ],
  "background": { "scripts": ["my.js"] },
  "browser_action": {
    "default_popup": "my.html"
  },
  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["socket.io.js", "my.js"]
    }
  ],
  "manifest_version": 2
}

my.js

console.log("hey");

var script = document.createElement('script');
script.src = 'socket.io.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
var script2 = document.createElement('script');
script2.src = 'smart.js';
script2.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script2);

smart.js

var socket = io.connect('http://localhost:3000');
socket.on('connect', function() {
  console.log('Client connected');
});

my.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="my.js"></script>
  </head>
  <body>
  </body>
</html>

如何使它起作用?
P.S。sockets.io.js位于与所有这些脚本

的目录中

您需要等待第一个脚本加载。

my.js:

(function(d, s, id){
  if (d.getElementById(id)){ return; } // exec only once
  var js1 = d.createElement(s); 
  js1.id = id;
  js1.onload = function(){
    console.log("js1 is ready");
    var js2 = document.createElement(s);
    js2.src = 'smart.js';
    document.getElementsByTagName('head')[0].appendChild(js2);
  };
  console.log("loading js1");
  js1.src = "socket.io.js";
  document.getElementsByTagName('head')[0].appendChild(js1);
}(document, 'script', 'some unique id'));

最新更新