Javascript在Google Chrome中工作,但在IE中被阻止

Javascript在Google Chrome中工作,但在IE中被阻止,javascript,html,internet-explorer,websocket,Javascript,Html,Internet Explorer,Websocket,使用中的代码进行测试。javascript在Google Chrome和Firefox中运行良好,但在IE中运行不好 好的,如果我在本地运行html文件,它可以在IE中工作,但它会在页面底部给我一个警告,说它禁用了页面上的一些脚本,我必须单击它才能启用它们。(在chrome中不会发生这种情况),但好的,我这样做了,它可以工作。但是我把它放在我的远程Web服务器上,它只托管HTML文件。该连接仍然是查看站点的浏览器的本地连接。然而,这在IE中不起作用,但可能是因为它甚至没有显示关于脚本的警告。页面

使用中的代码进行测试。javascript在Google Chrome和Firefox中运行良好,但在IE中运行不好

好的,如果我在本地运行html文件,它可以在IE中工作,但它会在页面底部给我一个警告,说它禁用了页面上的一些脚本,我必须单击它才能启用它们。(在chrome中不会发生这种情况),但好的,我这样做了,它可以工作。但是我把它放在我的远程Web服务器上,它只托管HTML文件。该连接仍然是查看站点的浏览器的本地连接。然而,这在IE中不起作用,但可能是因为它甚至没有显示关于脚本的警告。页面已加载,但js未运行

我假设IE默认会阻止它

我怎样才能绕过这个问题,让它像在chrome中一样工作。下面是html/js

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script type="text/javascript">
    function connect() {
        var ws = new WebSocket("ws://localhost:8080/service");
        ws.onopen = function () {
            alert("About to send data");
            ws.send("Hello World"); // I WANT TO SEND THIS MESSAGE TO THE SERVER!!!!!!!!
            alert("Message sent!");
        };

        ws.onmessage = function (evt) {
            alert("About to receive data");
            var received_msg = evt.data;
            alert("Message received = "+received_msg);
        };
        ws.onclose = function () {
            // websocket is closed.
            alert("Connection is closed...");
        };
    };


</script>
</head>
<body style="font-size:xx-large" >
<div>
<a href="#" onclick="connect()">Click here to start connection</a></div>
<a href="webSocketTest:">First Open program</a> 

</body>
</html>

函数连接(){
var ws=newwebsocket(“ws://localhost:8080/service”);
ws.onopen=函数(){
警报(“即将发送数据”);
ws.send(“Hello World”);//我想将此消息发送到服务器!!!!!!!!
警报(“消息已发送!”);
};
ws.onmessage=函数(evt){
警报(“即将接收数据”);
收到的var_msg=evt.data;
警报(“消息已接收=“+received_msg”);
};
ws.onclose=函数(){
//websocket已关闭。
警报(“连接已关闭…”);
};
};
更新: 感谢您,我检查了f12开发者控制台,发现一个错误:
SCRIPT5022:SecurityError

更改

ws://localhost:8080/service

ws://{your_remote_domain_host}:8080/服务


感谢那些帮助过我们的人,它应该会起作用

问题在于IE和Edge浏览器不想连接到“Localhost”,但是如果将Localhost更改为127.0.0.1,它就可以正常工作

更新代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
    <script type="text/javascript">
        function connect() {
            var ws = new WebSocket("ws://127.0.0.1:8080/service");
            ws.onopen = function () {
                alert("About to send data");
                ws.send("Hello World"); // I WANT TO SEND THIS MESSAGE TO THE SERVER!!!!!!!!
                alert("Message sent!");
            };

            ws.onmessage = function (evt) {
                alert("About to receive data");
                var received_msg = evt.data;
                alert("Message received = "+received_msg);
            };
            ws.onclose = function () {
                // websocket is closed.
                alert("Connection is closed...");
            };
        };


    </script>
</head>
<body style="font-size:xx-large" >
    <div>
    <a href="#" onclick="connect()">Click here to start connection</a></div>
<a href="webSocketTest:">First Open program</a> 

</body>
</html>

函数连接(){
var ws=newwebsocket(“ws://127.0.0.1:8080/service”);
ws.onopen=函数(){
警报(“即将发送数据”);
ws.send(“Hello World”);//我想将此消息发送到服务器!!!!!!!!
警报(“消息已发送!”);
};
ws.onmessage=函数(evt){
警报(“即将接收数据”);
收到的var_msg=evt.data;
警报(“消息已接收=“+received_msg”);
};
ws.onclose=函数(){
//websocket已关闭。
警报(“连接已关闭…”);
};
};

页面会加载,但js不会加载-我确信它可以加载,但可能无法运行哪个版本的IE?在IE11和Edge上测试过。Edge从不弹出窗口,但我认为这是同一个问题。你能试着将你的doctype改为。由于WebSocket是HTML5初始化的一部分,我可以想象IE可能会阻止它,因为您的文件不是有效的HTML5文档。遗憾的是,我目前无法亲自测试。我已经尝试过了,但没有成功。f12开发人员控制台提供了一个HTML1527:DOCTYPE。考虑添加一个有效的HTML5 DOCTYPE:“”。我会把帖子更新到我改的地方。为什么会在多明上?我希望它通过本地主机连接到本地机器上运行的服务器,而不是您写的Web服务器:“将它放在我的远程Web服务器上”-是远程的还是本地的?:数据html文件托管在Web服务器上,但它所建立的连接仍然是查看网站的计算机的本地连接。它在Chrome中工作得非常好:/I我将编辑问题以使其更清楚。我明白了-所以websocket服务器在您的本地机器上。。。控制台中是否有一些错误消息?我指的是IE js控制台以及服务器控制台?从未想过在IE中查看开发人员控制台。是的,它有一个错误脚本5022:SecurityError。我会更新帖子的,谢谢