Comet框架Plushlet使用问题解决方案
程序员文章站
2022-03-11 14:37:19
对于某些人来说,这可能是个愚蠢的问题,但是由于这个问题让我纠结了大半天,我实在是受不了了,我一定要把它贴出来!补充一下,之前我说的修改js来保证路径正确性的问题,至今没有人给予其他可能性的答复,而今天...
对于某些人来说,这可能是个愚蠢的问题,但是由于这个问题让我纠结了大半天,我实在是受不了了,我一定要把它贴出来!
补充一下,之前我说的修改js来保证路径正确性的问题,至今没有人给予其他可能性的答复,而今天我到家以后在ie8上,仅仅增加了
<base href="<%=basepath%>" rel="external nofollow" >
标签后就不再出现问题了,想想可能是因为少了一个定位项目绝对路径的标签,我看了一下页面源码:、
<html> <head> <base href="http://localhost:8080/mypushlet/" rel="external nofollow" > <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <script type="text/javascript" src="ajax-pushlet-client.js"></script> <script type="text/javascript"> pl._init(); pl.joinlisten('/cuige/he'); function ondata(event) { document.getelementbyid("mess").innerhtml=event.get("mess"); for(i=0;i<2;i++){alert(i);} // 离开 // pl.leave(); } </script> </head> <body> <center> <h1> my first pushlet! </h1> <br /> <div id="mess"></div> </center> </body> </html>
我绝对是这个可能!
不过我要说的不是这个问题,而是上面代码中的for循环,大家猜猜他的运行结果会是什么!
理论上来说,应该是每次推过来消息的时候就会进行提示,但是我发现消息只是推送了一次!为什么在方法里面写个循环就不行了呢,我一直纠结,同事说是不是其他代码中有 return 关键字把程序返回终止了,我尝试把其js都删除,但是仍然不能解决问题。
后来突然想到是不是变量冲突!
我以为,js方法内的变量都是局限在这个方法内,出去这个方法就会消失,但是我错了,就是这种认为是我的程序让我纠结了这么长时间!
原因很简单
for(i=0;i<2;i++){alert(i);}
我定的 i 变量,没有增加 var 标识,就会成为方法内的全局变量,如果其他代码也有 i 这个变量,就会造成变量冲突!
我尝试这样去写:
for(var i=0;i<2;i++){alert(i);}
这样就可以一直进行提示了!
由于javascript属于弱语言,我平时书写时也不是那么规范,也就造成了在这次引用别人api时还造成了变量冲突!
坏习惯害死人呀!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
js中for循环内的匿名函数使用i的问题及解决方案
-
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
-
FineUI框架 使用asp.net控件及其使用问题
-
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
-
vue框架下部署上线后刷新报404问题的解决方案(推荐)
-
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
-
总结Nginx 的使用过程中遇到的问题及解决方案
-
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
-
系统提示【此虚拟机似乎正在使用中】,虚拟机不能打开问题解决方案介绍
-
FineUI框架 使用asp.net控件及其使用问题