chrome-extension-book
  • 前言
  • Chrome Extension 开发概述
    • 初识 Chrome Extension
    • 快速学习 Chrome Extension
  • manifest.json 配置
    • omnibox - 定制你的搜索框
    • overridepage - 定制页面和设置
    • downloads - 下载操作
    • contextMenus - 右键菜单
    • devtools - 定制开发者工具
    • notifications - 桌面通知
  • API 使用
    • cookies - 操作 Cookie
    • webRequest - 监控网络请求
    • storage - 存储用户数据
    • i18n - 国际化
    • 通信机制 - onMessage
    • 跨应用进程通信 - NativeMessage
  • 在 Google Web Store 上线
    • 上线 Web Store
    • Chrome 用户不翻墙安装 Chrome Extension 方法
  • 尾声
Powered by GitBook
On this page
  • 配置
  • 开发
  • 其他
  1. manifest.json 配置

omnibox - 定制你的搜索框

Previousmanifest.json 配置Nextoverridepage - 定制页面和设置

Last updated 6 years ago

使用 API 可以定制你的搜索框:

如图,在这个 demo 里我们可以在搜索框中直接搜索想要的书籍,然后调取豆瓣的 API 接口,选择一本书,然后选择新建 tab 打开 、、。

配置

开发

可以在 chrome.omnibox.onInputChanged 中 suggest 方法中定义输出的内容,参数为数组:

suggest([
  {
    content: text,
    description: 'one'
  },
  {
    content: text,
    description: 'two'
  }
])

还可以在 chrome.omnibox.onInputEntered 中定义选中后的行为,demo 中是打开新 tab 页面:

chrome.omnibox.onInputEntered.addListener(function(text) {
  booksPrefix.forEach((bookUrl) => {
    const url = bookUrl + text
    openTab(url)
  })
})

其他

"permissions": [
  "https://book.douban.com/"
]

见 ,只要添加 omnibox 即可,keyword 则是你想要在搜索框中响应的关键字,本文 demo 使用 book。而 background 也是必不可少的,omnibox 的逻辑都在这里。

逻辑都在 中,注意 API:

: 搜索框中输入内容的事件

: 选中内容的事件

openTab 函数使用了 API,这也是一个重要的 Chrome Extension API,chrome.tabs.create 可以新打开一个 tab。

你可能还发现 background.js 中还有 fetchSuggest 方法,用来从豆瓣接口得到书籍的数据,这个接口会是一个 AJAX 接口。你对前端开发了解的话,就知道我们这是在跨域调取数据,Chrome Extension 是的,但是一定要在 manifest.json 中:

完整 demo 请查看

manifest.json
background.js
chrome.omnibox.onInputChanged
chrome.omnibox.onInputEntered
tab
允许跨域
声明
https://github.com/welearnmore/chrome-extension-demos/blob/master/omnibox
omnibox
图灵社区
异步社区
博文视点