问题描述
源代码如下http://www.xyhtml5.com/websocket-javascript-example.html但是我想传参,所以我改成如下,结果就不工作了,我是那里改错了呢,谢谢!<!DOCTYPEhtml><metacharset="utf-8"/><title>WebSocketTest</title><scriptlanguage="javascript"type="text/javascript">varwsUri="ws://echo.websocket.org/";varoutput;varyy="gggggggcccc操操";functioninit(xx){output=document.getElementById("output");testWebSocket(xx);}functiontestWebSocket(xx){websocket=newWebSocket(wsUri);websocket.onopen=function(evt){onOpen(evt)};websocket.onclose=function(evt){onClose(evt)};websocket.onmessage=function(evt){onMessage(evt)};websocket.onerror=function(evt){onError(evt)};}functiononOpen(evt){writeToScreen("CONNECTED"+yy+xx);doSend("WebSocketrocks");}functiononClose(evt){writeToScreen("DISCONNECTED");}functiononMessage(evt){writeToScreen('<spanstyle="color:blue;">RESPONSE:'+evt.data+'</span>');websocket.close();}functiononError(evt){writeToScreen('<spanstyle="color:red;">ERROR:</span>'+evt.data);}functiondoSend(message){writeToScreen("SENT:"+message);websocket.send(message);}functionwriteToScreen(message){varpre=document.createElement("p");pre.style.wordWrap="break-word";pre.innerHTML=message;output.appendChild(pre);}window.addEventListener("load",init('ssss666'),false);</script><h2>WebSocketTest</h2><divid="output"></div></html>
解决方案
解决方案二:
自己置顶一下,大家帮忙看一眼,非常感谢
解决方案三:
functiononOpen(evt){writeToScreen("CONNECTED"+yy+xx);doSend("WebSocketrocks");}你这个XX编码没定义吧!
解决方案四:
functiontestWebSocket(xx){websocket=newWebSocket(wsUri);websocket.onopen=function(evt){onOpen(evt)};我还以为用上面的可以声明呢,看来我错了
解决方案五:
window.addEventListener的第二个参数是一个“函数”,也就相当于c#的委托。而你的代码传的不是函数,你的init('ssss666')语句的返回值为null,所以你的代码就相当于写window.addEventListener("load",null,false);脚本监听浏览器端dom抛出的事件,它回调函数的参数列表是固定的。也就是说init函数的第一个参数、第二个参数、第三个参数,是预定义的,是浏览器javascript很早以前的规范所定义的。当你的init函数不足3个参数,或者多于3个参数,也都不会让你自己随便定义参数。所以你写的代码中的init('ssss666')语句完全是无根据的。只能解释为你不太熟悉javascript以及前端基本规范。实际上,javascript语言是一种很不靠谱的语言。它所谓“动态语言”其实就是混乱,而你看不到任何明确的编译错误信息,程序会胡乱执行。所以javascript语言编程需要你更多地瞎猜、硬背,多测试(而且许多测试都是在重复上百次之后才报bug)。
解决方案六:
引用3楼zhengyingcan的回复:
functiontestWebSocket(xx){websocket=newWebSocket(wsUri);websocket.onopen=function(evt){onOpen(evt)};我还以为用上面的可以声明呢,看来我错了
我估计根本没有用vs调试js。由于你的testWebSocket并不是在页面load事件触发之后执行的(而是在window.addEventListener这条语句执行完之前执行的),所以你的output变量的值肯定是undefined,根本找不到<div>。你贴出你“以为的”一些东西,看起来都是蒙着来的,不是调试、测试而来的。所以你所描述的东西处处都是问题,简直是一团乱麻,不知道从哪里让你认证学、落实才好了。
解决方案七:
我估计根本没有用vs调试js-->我估计你是平常根本没有用vs调试js对于js代码来说,比如说abc是一个函数,那么varf=abc;
跟varf=abc('1234');
以及varf=abc(1234);
有什么区别呢?这需要你真正学习javascript!
解决方案八:
好的,我多看看JS视频