日期:2014-05-16  浏览次数:20342 次

(三)Pushlet框架客户端js-pushlet-client.js分析-初始化分析

?? 首先介绍下此js的作用:在客户的jsp中加入隐藏的iframe,从而完成与服务器之间的通信,数据的处理交给回调函数,具体如何调用回调函数下面会分析。
??? 分析js的思路分以下几个步骤:
1 初始化
2 join
3 listen
4 pubilsh
5 _push函数分析
6 其他

一、初始化

??? 1? 导入js-pushlet-client.js文件

?

上图是我工程的路径图,所以导入为:<script type="text/javascript" src="<%=basePath%>imContext/lib/js-pushlet-client.js"></script>,导入后会执行js中的_initURIs();// Initialize various?URLs,作用是获得存放js-pushlet-client.js的路径,并赋值给pushletNetURI,如上则有pushletNetURI = basePath + imContext/lib;这个变量的作用就是为了找到js-pushlet-net.html服务的。

2 调用初始化函数p_embed(thePushletWebRoot)

thePushletWebRoot 可以为空,也可以根据实际的项目赋值。不赋值,则系统自动根据jsp页面导入的pushlet-client.js文件的路径字符串截取,获得路径然后pushletNetURI = getWebRoot() + 'lib/js-pushlet-net.html';所以如果需要将js-pushlet-net.html放到lib文件夹下面,一般按照我上图的路径放即可。

如果赋值根据上图则可以p_embed(basePath + "imContext/");// 初始化Pushlet框架

?

看下面源码:

?var pushletLayer = '<iframe id="pushletFrame" name="pushletFrame" src="' + pushletNetURI + '" style="visibility: hidden; width: 0px; height: 0px; border: 0px;"></iframe>';

self.document.write(pushletLayer);// 此处就是放入

??? 特别说明:我当时放入的时候self.document.write(pushletLayer);报js错误。所以我就在自己的页面中定义了一个<div id="hiddenFrame"></div>然后把该隐藏的iframe放入到了这个div中,如下
?/*
? * @aijianfeng
? */
?$("#hiddenFrame").append(pushletLayer);// 自定义div,存放隐藏的frame(jquery语法)

?好了大功告成了

?

总结:啰嗦了这么多,其实初始化就是导入js,然后调用p_embed函数?

?

?