2017-09-25 95 views
0

导入的变量我搞砸了socket.io,遇到了一段时间我无法解决的问题。我有一个HTML页面,导入了2个不同的脚本。其中之一是socket.io导入;我怎样才能访问另一个<script>标签在JS

<script src="node_modules/socket.io-client/dist/socket.io.js"> 
    var socket; 
    socket = io.connect('http://localhost:8080'); 
</script> 

另一个是为游戏做东西的脚本。我想调用在这个脚本中的第一个导入脚本中声明的变量“套接字”(上图)。而且仅供参考,它就像这样的函数。

<script type="text/javascript"> 
    function myFunc(data) { 
     socket.emit('key',data); 
    } 
</script> 

现在,如果我尝试像这样运行它,它说“套接字”变量没有定义。如果我尝试在socket.io脚本中使用游戏脚本,它也不起作用。而且我不知道是否有任何方法可以在游戏脚本中导入socket.io脚本,所以我该怎么做?

+0

我不知道,如果浏览器将执行的第一个脚本,因为脚本标签有一个'src'属性。请参见[如果脚本元素具有指定的src属性,则不应在其标记中嵌入脚本。](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script) – James

+0

让我们尝试一个函数myFunc(套接字,数据)作为参数来查看,不知道结果:(。 – 2017-09-25 20:50:30

回答

3

你不能有一个脚本标签既使用源代码又使用其中的东西。把你的socket.io源脚本放在它自己的脚本标记中,它应该可以工作。

编辑:就像这样:

<script src="node_modules/socket.io-client/dist/socket.io.js"></script> 
<script> 
    var socket; 
    socket = io.connect('http://localhost:8080'); 
</script> 
+0

它不在相同的脚本标记。页面中包含2个不同的脚本标记 –

+0

在第一个脚本中,在标签中都有一个'src'属性和文本,这是不行的,你必须把它们放在单独的脚本标签中,就像我上面显示的 –

+0

哦谢谢,我不知道我为什么这么做。 –