Comet框架Plushlet使用问题解决方案

论坛 期权论坛 脚本     
nimin   2020-12-19 20:49   12   0

对于某些人来说,这可能是个愚蠢的问题,但是由于这个问题让我纠结了大半天,我实在是受不了了,我一定要把它贴出来!

补充一下,之前我说的修改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时还造成了变量冲突!

坏习惯害死人呀!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持社区。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1012780
帖子:202556
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP