Chrome的地址栏自动匹配完成(AutoComplete)
2009-09-03 20:33
585 查看
背景
在目前流行的各种浏览器中,都包含了一个比较实用的特性:当你在地址栏中输入字符时,浏览器自动匹配出一些可能的结果给你,非常快捷和高效,本文主要讨论在Chrome中的实现机制。Chrome的实现机制
在Chrome中与AutoComplete相关的类都包含在Browser工程中。主要包含了以下几个类:上图的类结构中,右侧的几个类是完成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:自动匹配结果显示的下拉窗口。用来显示各种匹配结果。
整个匹配的大致流程如下:
至于实现的细节,大家可以参考代码实现了,就不在这里赘述了。
相关文章推荐
- 使用jQuery Autocomplete(自动完成)插件,结合ajax实现搜索框匹配
- 使用AutoCompleteTextView实现自动匹配输入的内容
- jQuery.Autocomplete实现自动完成功能(详解)
- Python自动测试打开chrome时,chrome地址栏总是出现data:;
- jQuery.Autocomplete实现自动完成功能(详解)
- 让输入框关闭自动完成(AutoComplete)功能
- Android 组件系列(1):自动完成输入内容的组件(AutoCompleteTextView )
- jQuery.Autocomplete实现自动完成功能(详解)
- asp.net ajax 使用AutoCompleteExtender开发自动完成功能
- JQuery 插件之Ajax Autocomplete(ajax自动完成)
- autocomplete-jquery最强大的自动完成插件
- Ajax 搜索自动匹配AutoComplete
- 使用jQuery Autocomplete(自动完成)插件
- Jquery AutoComplete自动完成 的使用方法实例
- WPF控件开发(2) 自动完成(AutoComplete)-1
- java_前端_autocomplete_搜索框自动匹配提示
- JQuery easyui里面的自动完成autocomplete插件
- 动态自动匹配输入的控件AutoCompleteTextView和MultiAutoCompleteTextView
- jquery autocomplete 自动完成插件
- 收藏一篇文章:为Chrome和firefox地址栏添加自动 https Google 搜索