的目录中
你好呀!在将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'));