青岛保皇规则:搜狗云输入法使用感受和实现原理初探

来源:百度文库 编辑:中财网 时间:2024/04/25 09:34:34

新闻来源:个人原创
前两天下载搜狗输入法的时候就看到官网上有提示说,搜狗将在北京时间11月2日下午14:00推出一个新的概念产品,完了一直在写作业竟然给忘记了.今天早上在google wave中群聊的时候kurt给我提醒了.隧 login到了http://pinyin.sogou.com/cloud/ 进行观望.

  • 使用初探
  1. 安装
按照官网上的说明将搜狗云输入法链接保存到自己的书签中.或者直接用鼠标将搜狗云输入法图标拖到书签中.

2.使用

点击刚才保存的云输入法书签.将会启动一个悬浮的输入法框.

  • 使用感受
  1. 搜狗云输入法的页面兼容性还不是很好的.

在很多的页面上当点击启用搜狗云输入法时会出现也没反应缓慢,同事提示出现Unresponsive script Warning. 然后输入法就会崩溃.



2.输入法的反应速度还是很慢的.这个原因会在后面云输入法实现原理初探中具体说明.所以当网速慢的时候使用起来会很不爽.尤其是不能体验狂敲键盘 的感觉.另外一个方面,输入法的取词查询都是在服务器端进行的.所以如果云输入法有像搜狗客户端输入法那样近2亿多用户的时,状况也是不敢想象的.

3.在可以使用搜狗云输入法页面的情况下.可支持的输入页面部分也是很有限的.地址栏中好像不支持输入.
  • 原理初探

这是官方网站上给出的一张图片



云输入法是基于B/S架构的.无需安装.运算均在服务器端进行. 为了搞清楚云输入法到底是怎么搞的.这里借用了firefox下一个很有名的插件.Firebug.

首先解释一个问题,当我们点击启动搜狗云输入法时我实际做了什么事情.

当将鼠标放到书签上时.注意观察firefox下面的地址栏.



稍微懂点web和脚本语言的都知道.这可能是一段javascript代码.

Bingo!

这就是启动云输入法的完整代码. 点击这里下载JS


这段JS代码首先判断当前浏览器是否是IE内核.以及判断当前页面是不是UTF_8编码.如果ie=1并且是UTF_8编码的页面则调用http://web.pinyin.sogou.com/web_ime/init2_utf8.php 否则调用http://web.pinyin.sogou.com/web_ime/init2.php 页面.

同时在当前页面body上动态生成一个Script标签.script标签的src属性是上面要调用的页面地址.初始化完成后会生成一个script元素.



如果此时页面没有报JS warning的话恭喜你走过了第一关.不出意外你会看到这个图标



注意这个和平时见到的图标不一样噢. (不都差不多嘛? ==No 这个是在页面上的! ==汗~)

这个图标其实使用js的div生成的一个浮动区域.

这个是浮动区域的javascript代码. 点击这里下载JS



这个时候基本框架都有了.OK,当我们输入汉字的时候是什么情况呢?

我们来做个测试.当在页面输入拼音 shiying 的时候,我们看到页面会生成n多script标签.

http://web.pinyin.sogou.com/web_ime/get_ajax/shi.key

http://web.pinyin.sogou.com/web_ime/get_ajax/shi.key

…etc

到这里大家可能都比较疑惑.这些东西是什么.(注意这些URL是可以访问的.)进去看看呗.(这部分工作交给观众自己进行.)



进去之后可能傻了.一堆乱码? No, definitely no.猜想可能是页面经过了编码. 是什么编码呢?凭经验我猜应该是URL Encode.OK那就decode一下呗.

点击这里进行URL decode (进入页面后点击”反编码/解码”,嘿嘿.) 看看参考译文三或者四.你会大叫, 我靠,这不就是输入法的候选词么.

Bingo (again~)!

测试中发现这些