Websocket 阻止我的 jQuery 工作
Posted
技术标签:
【中文标题】Websocket 阻止我的 jQuery 工作【英文标题】:Websocket blocking my jQuery from working 【发布时间】:2016-07-08 13:15:05 【问题描述】:我在我的网站中添加了一个 web-socket,现在我所有的 jQuery 代码都停止工作了。
我不知道问题是什么。我该如何解决这个问题?
这里是完整的 jQuery 代码:
$(document).ready(function()
var i = parseInt($('#counter').val(), 10);
$("#postcount").on("click", function()
var z = i ++;
$('#counter').val(z);
alert(z);
);
);
Websocket 脚本
var socket;
function init()
var host = "ws://127.0.0.1:9000/echobot";
try
socket = new WebSocket(host);
//log('WebSocket - status '+socket.readyState);
log('1');
catch(ex)
log(ex);
$("msg").focus();
function send()
var txt,msg;
txt = $("msg");
msg = txt.value;
if(!msg)
log("Message can not be empty");
return;
txt.value="";
txt.focus();
try
socket.send(msg);
log("<b>"+msg+"</b>");
catch(ex)
log(ex);
// Utilities
function $(id)
return document.getElementById(id);
function log(msg)
$("log").innerhtml = msg;
function onkey(event)
if(event.keyCode==13)
send();
首页
<body onload="init()">
<div id="log"></div>
<input id="msg" type="textbox" onkeypress="onkey(event)"
onchange="send()" onkeyup="send()"/>
<button onclick="send()">Send</button>
<br/>
<input id="counter" type="textbox" value="2"/>
<input type="button" id="postcount" class="postcount" value="Reconnect"/>
</body>
【问题讨论】:
您至少检查过控制台是否有错误吗? 我从控制台@RoryMcCrossan 找不到问题所在 什么是function $(id)
@ᾠῗᵲᄐᶌ 我从不检查几个小时前我下载的 web-socket 是什么让我删除它并运行脚本看看会发生什么
function $(id)
可能会覆盖 jQuery,因为您正在重新定义 $('element')
所做的事情。它曾经返回一个 jQuery 对象,但您已经覆盖它以返回具有该特定 ID 的 dom 元素。切换函数名称或jQuery
- 使用jQuery('element')
而不是$('element')
【参考方案1】:
试试完整的例子:
$(document).ready(function()
var i = parseInt($('#counter').val(), 10);
$("#postcount").on("click", function()
var z = i ++;
$('#counter').val(z);
alert(z);
);
init();
);
var socket;
function init()
var SO = window.WebSocket || window.MozWebSocket;
var host = "ws://127.0.0.1:9000/echobot";
try
socket = new SO(host);
//log('WebSocket - status '+socket.readyState);
log('1');
catch(ex)
log(ex);
$("msg").trigger("focus");
function send()
var txt,msg;
txt = $("#msg");
msg = txt.val("");
if(!msg)
log("Message can not be empty");
return;
txt.val("");
txt.focus();
try
socket.send(msg);
log("<b>"+msg+"</b>");
catch(ex)
log(ex);
function log(msg)
$("#log").html(msg);
function onkey(event)
if(event.keyCode==13)
send();
【讨论】:
以上是关于Websocket 阻止我的 jQuery 工作的主要内容,如果未能解决你的问题,请参考以下文章
C# HttpListener Prefixes 不接受 `ws` 阻止 JS WebSocket 连接
使用 CDN 会阻止 Intellisense 为 jQuery 工作吗?
公共互联网何时(以及多久)会阻止 WebSocket 连接?