如何在浏览器中打开IM并执行相应操作?下面以旺旺为例说明,对于QQ等原理一致。
1. 浏览器中如何判断旺旺是否已经安装?
下面一步步来探索,过程如下:
(1) 打开淘宝任意店铺页面,查看源码,在亮灯旺旺图标处有如下代码:
img是旺旺图标,重点是href的内容。查看href链接的源码,如下:
从源码可知这段代码做了这几件事:首先调用sendClientMsg函数,等待1秒钟,打开一个空白窗口,然后关闭之。核心是sendClientMsg函数。它位于website.js中。查看website.js的源码。改源码被混淆压缩了,为了便于查看,找个在线js格式化工具将代码重新格式化一下。这里使用了“站长工具”提供的在线js格式化工具http://tool.chinaz.com/Tools/JsFormat.aspx。
有这样一段函数,它首先创建一个aliimx的activeX对象,如果创建成功则说明旺旺被安装了,否则根据站点来源(淘宝中国站、阿里中国站、雅虎中国站)分别判断是否安装了其它几个版本的旺旺。源码如下:
为何通过
这段代码能判断出Windows是否安装了旺旺呢?旺旺安装到Windows中之后会在注册表中写入若干条注册表项,在浏览器中通过ActiveX控件来读取注册表,如果能够找到相应的注册表项,则说明当前Windows中安装了旺旺,否则表明没有安装。调用的时候浏览器会去读取注册表,在HKEY_CLASSES_ROOT下搜索aliimx.wangwangx表项,找到了则说明系统安装了阿里旺旺。
由此我们也可以知道,如果系统中的旺旺是未经“美化”的绿色版,浏览器不一定能够判断出它的存在。
2. 如何在浏览器中把旺旺聊天窗口打开?
在1中我们已经判断出系统中安装了阿里旺旺,那么下一步就是打开旺旺聊天窗口。怎么做呢?一切还是通过website.js中得脚本实现的,从sendClientMsg函数往下找,可以看到如下一段代码:
这里好像什么都没有做,只不过是将一个地址赋值给浏览器的location属性而已。一般来说,如果将一个url赋值给location,那么浏览器将跳转到这个url处。但是此处不是一个url,而是一个aliim:sendmsg这样的“命令”,该如何处理呢?不妨点击一下,可以看到浏览器给出如下提示:
这说明浏览器在处理这种目标路径的时候会采取比较特殊的动作。在Windows中这叫做“shell命令”。shell命令能够让浏览器打开外部的应用。那么,浏览器是如何根据aliim:sendmsg这个命令找到对应的外部应用的呢?奥妙还是在注册表中,在注册表中搜索aliim关键字,可以看到如下内容:
aliim项下记录了它对应的应用的路径。这里应用的名称是wwcmd,它应该是一个命令解析器,%1是它的参数,也就是地址中冒号(:)之后的内容,wwcmd将根据解析好的命令打开阿里旺旺对应的聊天窗口。
分享到:
相关推荐
Uniapp实现IM聊天即时通讯功能列表: 私聊、群聊、会话列表,文字、表情,图片,语音,视频消息 支持发送自定义业务消息,比如处方,订单,红包,地理位置等 手机通知栏提醒,厂商通道支持:iOS,谷歌FCM,华为,...
vue2腾讯云IM聊天系统
android 软键盘弹出动态改变UI布局(IM聊天窗口设计示例) 源码
抛弃SDK,采用http的方式封装的极光IM聊天,整个工具体积特别小,并且在项目中可以减少极光jar的冲突及依赖,因为是http请求,所以可扩展性极强,代码简洁
安美奇浏览器是一款以C#开发基于IE内核的多功能站长专用浏览器,内置七项功能:图片水印,FTP上传下载,内容采集,内容编辑,聊天互动,信息查询,网站推广,文字批量替换等功能,所有功能均为免费是广大站长的不二...
课题题目:Java IM网络聊天程序设计 1. 主要功能: (1)服务器首先启动,使用ServerSocket监听指定的端口,等待客户端连接,客户端使用Socket对网络上某一个指定IP的服务器上的端口发出连接请求; (2)登录信息...
完整优化版H5即时通讯客服IM聊天系统(微信+安卓+苹果端APP源码
IMTab:是一款适用于QQ2008的聊天窗口的工具,能把N多个聊天窗口变成一个聊天窗口,大大节省你任务栏的空间!
IM聊天界面
冗余系统中的ET 200M接口模块IM153-??2兼容性pdf,西门子冗余系统中的ET 200M接口模块IM153-2的兼容性:本文列举了在S7-400H冗余系统中的ET 200M接口模块IM153-2的兼容性问题和有关的注意事项。
Android集成网易云IM实现 网易云信Im的登录、 单聊和建群群聊等功能,适合新手入门网易云IM通讯
gin+websocket+mongodb实现 IM 即时聊天系统,基于WS连接的即时聊天
3.无论如何,即无论用途如何、是否经过修改或美化、修改程度如何,只要使用本系统的整体或任何部分,未经书面许可,页面中出现的任何有关ImChat或XKnet的标志和文字内容,都必须保留,而不能清除或修改 详细版权...
J-IM 是用JAVA语言,基于t-io开发的轻量、高性能、单机支持几十万至百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息发送如内置(Http...
JAVA开发高性能IM即时通信系统源码,JAVA语言开发的轻量、高性能、单机支持几十万至百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息...
WebSocket长连接实现聊天IM 接收发送消息,百分百能用
即时通讯源码_ 青柚 H5 聊天系统,即时通讯,IM 聊天 APP、带原生/安卓苹果端 APP 源码+详细视频教程 购买来的通讯,全原生,并不是视酷或酷信的二开版本,从底层开始结构就完全不一样,mongodb 的库,uniapp 混编手端...
非常适用的IM聊天框架,实现IM即时聊天通过XMPP协议,并且有客户端和服务器端的源码,不用多说,看了就懂
使用websocket连接rabbitmqtt搭建IM聊天
一个简单的IM一个简单的IM一个简单的IM