注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

写着玩

Bob

 
 
 

日志

 
 
 
 

Chrome的地址栏自动匹配完成(AutoComplete)  

2009-12-01 18:53:00|  分类: Chrome |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

http://blog.csdn.net/xingtian713/archive/2009/09/03/4516738.aspx

 

背景

在目前流行的各种浏览器中,都包含了一个比较实用的特性:当你在地址栏中输入字符时,浏览器自动匹配出一些可能的结果给你,非常快捷和高效,本文主要讨论在Chrome中的实现机制。

Chrome的实现机制


在Chrome中与AutoComplete相关的类都包含在Browser工程中。主要包含了以下几个类:

Autocomplete的主要类

上图的类结构中,右侧的几个类是完成AutoComplete功能的逻辑部分,左侧的几个类主要是对应的界面类。
AutocompleteController: Auto Complete 控制器。这是完成Auto Complete功能的核心调度类。AutocompleteController接受用户的输入,将任务分配给各个AutocompleteProvider,并对各个AutoCompleteProvider生成的AutocompleteMatch结果进行汇总、排序、过滤。最后将结果返回给UI。UI层将建议结果以AutocompletePopupView下拉框形式展示给用户。

AutoCompleteProvider:AutoComplete任务的真正执行者,包含了四个不同的子类,分别从不同的角度进行匹配。其中HistoryContentProvider从历史浏览的内容记录中进行匹配;HistoryURLProvider从历史URL记录中进行匹配;KeywordProvider从关键词记录中进行匹配;SearchProvider从搜索引擎服务器进行匹配(与网络进行交互)。每一个Provider匹配的结果AutocompleteMatch都有相对的权值,用于AutocompleteController进行排序。

AutocompleteInput:用户输入,对用户的输入进行预处理,分析用户输入的关键字类型(URL或者查询关键字),同时AutoComplete分为同步和异步完成两种类型,这些参数也是在AutocompleteInput中保存。

AutocompleteMatch:匹配结果。每一个AutocompleteProvider匹配后的都会出现零条或者多条匹配结果。每一条匹配结果中包含了:类型(History URL,History Title,History Body, History Keyword, Search History, Search Suggest等)、权值、以及用户输入在匹配结果中的位置信息等。

AutocompleteResult: 最终匹配结果。AutocompleteController根据不同Provider的匹配结果进行整合后的结果。

AutocompleteEditView、AutocompleteEditController和AutocompleteModel:Chrome中的地址输入栏窗口相关类。基本上按照MVC的模式进行设计。

AutocompletePopupView、AutocompletePopupModel:自动匹配结果显示的下拉窗口。用来显示各种匹配结果。

整个匹配的大致流程如下:
Autocomplete主要流程
至于实现的细节,大家可以参考代码实现了,就不在这里赘述了。
  评论这张
 
阅读(517)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017