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

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

补充一下,之前我说的修改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)

相关推荐

  • Ajax和Comet技术总结

    Ajax是一种技术,一种能够向服务器请求额外的数据而无需卸载页面的技术,能够使网页具备更优的用户体验.Ajax技术的核心是XMLHttpRequest对象(XHR).本文从XHR开始谈起,理解Ajax技术的特点,再对跨域以及Comet等技术进行简要理解和总结. XMLHttpRequest基本用法 XHR对象有两个常用的方法open和send.open方法用户启动一个HTTP请求,不过它不会真的发送HTTP请求.open方法接收3个参数,分别表示请求的HTTP方法.请求的URL.是否异步.XHR

  • JavaScript数据推送Comet技术详解

    JavaScript数据推送主要致力于webapp的在线推送服务,不用我们每次都像服务器去发送Ajax请求而主动从Server端推送数据到本地. 数据推送进化史: 1. HTTP协议简易轮询,保持着一个链接不放,或者通过前端不停的向后端发送请求 2. H5更新后有了WebSocket大大改善了双向和单向推送数据的便利性 3. SSE(Server-Send Event):服务器推送数据的新方式 Comet:基于 HTTP 长连接的服务器推送技术 本课时介绍Comet:基于 HTTP 长连接的服务

  • 页面间隔半秒钟更新时间 Asp.net使用Comet开发http长连接示例分享

    好处:1.和AJAX轮询比起来 节省资源,并且延迟小, 2.和webSocket比起来,适用的场景比较广泛. 1.先建立一个Asp.net MVC的空项目 添加一个控制器  (同样的代码在Asp.net WebForm中也是可以使用的) 复制代码 代码如下: public class CometController : Controller    {        public ActionResult Test()        {            Response.Buffer = f

  • 详解Tomcat如何实现Comet

    Comet模式是一种服务器端推技术,它的核心思想提供一种能让当服务器端往客户端发送数据的方式.Comet模式为什么会出现?刚开始人们在客户端通过不断自动刷新整个页面来更新数据,后来觉得体验不好又使用了AJAX不断从客户端轮询服务器更新数据,然后是使用Comet模式由服务器端通过长连接推数据.Comet模式能大大减少发送到服务器端的请求从而避免了很多开销,而且它还具备更好的实时性. 如图所示,客户端发送一个请求到服务器,服务器接收了连接后一直保持住连接不关闭:接着客户端发送一个操作报文告诉服务器需

  • 使用Java实现类似Comet风格的web app

    开始     在本文中,我将展示如何使用各种不同的 Java 技术构建一些简单的 Comet 风格的 Web 应用程序.读者对 Java Servlet.Ajax 和 JavaScript 应该有一定的了解.我们将考察 Tomcat 和 Jetty 中一些支持 Comet 的特性,因此需要使用这两个产品的最新版本.本文使用 Tomcat 6.0.14 和 Jetty 6.1.14.另外还需要一个支持 Java 5 或更高版本的 JDK.本文使用 JDK 1.5.0-16.此外还需要看看 Jett

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

    对于某些人来说,这可能是个愚蠢的问题,但是由于这个问题让我纠结了大半天,我实在是受不了了,我一定要把它贴出来! 补充一下,之前我说的修改JS来保证路径正确性的问题,至今没有人给予其他可能性的答复,而今天我到家以后在IE8上,仅仅增加了 <base href="<%=basePath%>" rel="external nofollow" > 标签后就不再出现问题了,想想可能是因为少了一个定位项目绝对路径的标签,我看了一下页面源码:. <h

  • Java日志框架用法及常见问题解决方案

    日志定义: 在计算机领域,日志文件(logfile)是一个记录了发生在运行中的操作系统或其他软件中的事件的文件,或者记录了在网络聊天软件的用户之间发送的消息. 日志记录(Logging):是指保存日志的行为.最简单的做法是将日志写入单个存放日志的文件. 日志级别优先级: ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 日志框架的作用: ①:跟踪用户对系统访问,记录了系统行为的时间.地点.状态等相关信息

  • springboot log4j2不能打印框架错误日志的解决方案

    springboot log4j2为什么不能打印框架错误日志 问题 使用springboot时老的框架使用的是log4j2,为了兼容不能够使用logback,按照网上的教程导入了log4j2但是不能够输入框架错误日志,例如bean命名重复,springmvc url映射重复,这些都是开发中所需要的友好提示 解决方案 怎么出现的问题,就不详细描述了,原因是我引入的log42是散件不是基于springboot集成配置的,导致只能够输出基本信息,原理我会在 一个月后左右探究完毕补充. 下面我说说怎么正

  • 5步教你快速写一个android Router路由框架

    Router路由框架 什么是路由?说简单点就是映射页面跳转关系的,当然它也包含跳转相关的一切功能. 前言 网上大片的路由框架实在太多了,实现的方式都大同小异,通过注解实现路由表:但是在多module开发的时候怎么合并路由表,不同的框架有着自己的解决方案. ARouter:通过类查找进行合并路由表. ActivityRouter:通过注解进行路由表合并. 路由框架的意义 Android系统已经给我们提供了api来做页面跳转,比如startActivity,为什么还需要路由框架呢?我们来简单分析下路

  • JQuery团队打造的javascript单元测试工具QUnit介绍

    什么是单元测试? 单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.单元测试主要是用来检验程式的内部逻辑,也称为个体测试.结构测试或逻辑驱动测试.通常由撰写程式码的程式设计师负责进行. 通常来说,程式設計師每修改一次程式就會進行最少一次單元測試,在編寫程式的過程中前後很可能要進行多次單元測試,以證實程式達到軟件規格書(en:Specification)要求的工作目標,沒有臭蟲:雖然单元测试不是什么必须的,但也不坏,這牽涉到專案管理的政策決定. -- 维基百科

  • nodejs中实现sleep功能实例

    nodejs最让人不爽的就是其单线程特性,很多事情没法做,对CPU密集型的场景,性能也不够强劲.很长一段时间,我想在javascript语言框架下寻求一些解决方案,解决无法操作线程.性能差的问题.曾经最让我印象深刻的方案是fibers,不过fibers也好,其他方案也好,在线程操作上还是很别扭,太过依赖辅助线程,本末倒置:就fiber而言,javascript固有的低性能问题并不能解决:最别扭的是在javascript语言框架下,线程间的消息传递常常很受限制,经常无法真正地共享对象. nodej

  • 如何在Spring Boot启动时运行定制的代码

    Spring Boot会自动为我们做很多配置,但迟早你需要做一些自定义工作.在本文中,您将学习如何挂钩应用程序引导程序生命周期并在Spring Boot启动时执行代码. 1.执行bean初始化的方法 Spring启动应用程序后运行某些逻辑的最简单方法是将代码作为所选bean引导过程的一部分来执行. 只需创建一个类,将其标记为Spring组件,并将应用程序初始化代码放在带有@PostConstruct注释的方法中.理论上,您可以使用构造函数而不是单独的方法,但将对象的构造与其实际责任分开是一种很好

  • vue+elementUI 复杂表单的验证、数据提交方案问题

    当我们在做后台管理系统时,经常会遇到非常复杂的表单: 表单项非常多 在各种表单类型下,显示不同的表单项 在某些条件下,某些表单项会关闭验证 每个表单项还会有其他自定义逻辑,比如 输入框可以插入模板变量.输入字符数量显示.图片上传并显示.富文本 ... 在这种错综复杂的情况下,完成表单的验证和提交 可以查看具体例子:例子中省略了很多琐碎的功能,只保留整体的复杂表单框架,用于展示解决方案 方案1: 在一个 vue 文件中 所有的表单项显示隐藏.验证.数据获取.提交.自定义等逻辑放在一起 v-if/v

  • WebSocket简介与消息推送

    目录 一.Socket简介 TCP/IP协议 UDP协议 二.WebSocket简介与消息推送 三.WebSocket客户端 四.WebSocket服务器端 五.测试运行 六.小结与消息推送框架 6.1.开源Java消息推送框架 Pushlet 6.2.开源DotNet消息推送框架SignalR 七.代码下载 7.1.Java实现的服务器端代码与客户端代码下载 7.2.DotNet服务器端手动连接实现代码下载 7.3.DotNet下使用SuperWebSocket三方库实现代码下载 B/S结构的

  • Android Retrofit 2.0框架上传图片解决方案

    本文为大家分享了 Android Retrofit 2.0框架上传图片解决方案,具体内容如下 1.单张图片的上传 /** * 上传一张图片 * @param description * @param imgs * @return */ @Multipart @POST("/upload") Call<String> uploadImage(@Part("fileName") String description, @Part("file\&qu

随机推荐