首先介绍下此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函数