Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
chrome 插件开发
Search
edokeh
April 23, 2012
Programming
7
730
chrome 插件开发
edokeh
April 23, 2012
Tweet
Share
More Decks by edokeh
See All by edokeh
Backbone 开发实战
edokeh
0
200
新一站 HTML5 触屏版开发总结
edokeh
34
8.5k
模块化的Javascript开发-FTF
edokeh
16
1.2k
iphone webapp入门实战
edokeh
14
830
REST实践指南
edokeh
12
640
Other Decks in Programming
See All in Programming
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
7
2.4k
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
680
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
420
SQL Server 2025 LT
odashinsuke
0
110
Graviton と Nitro と私
maroon1st
0
150
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
680
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
920
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
300
開発に寄りそう自動テストの実現
goyoki
2
1.6k
Developing static sites with Ruby
okuramasafumi
0
340
SwiftUIで本格音ゲー実装してみた
hypebeans
0
530
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
150
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
The Spectacular Lies of Maps
axbom
PRO
1
400
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
120
Discover your Explorer Soul
emna__ayadi
2
1k
[SF Ruby Conf 2025] Rails X
palkan
0
650
How to Ace a Technical Interview
jacobian
281
24k
From π to Pie charts
rasagy
0
97
WCS-LA-2024
lcolladotor
0
390
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
Done Done
chrislema
186
16k
Transcript
Chrome Extension开发入门 葛亮@焦点科技 2012.4.23
简介 • 扩充Chrome功能 – 增强Chrome界面 – 修改页面 • 使用HTML/Javascript/CSS编写 –
可以使用HTML5/ES5/CSS3 • Chrome提供辅助API • 自动更新
My Chrome Extensions
插件架构 popup popup page background page page action browser action
content scripts web page Chrome Extension API
文件结构 .crx 压缩文件夹 manifest.json 配置文件 *.html *.js *.css *.png *.jpg
*.gif 其他文件
manifest.json { // 必需 "name" : "my extension", "version" :
"0.1", "manifest_version" : 2, // 推荐 "description" : "It’s nice", "icons": { "16" : "icon16.png", "48" : "icon48.png", "128" : "icon128.png“ } }
Startup • 新建空文件夹 • 新建并编写manifest.json • 通过Chrome“载入正在开发的扩展程序”
例子1:员工查询 • 架构 popup popup page web page OA服务器 Ajax交互
例子1:员工查询 1. 准备工作 抓http包
例子1:员工查询 2. 添加带popup页面的按钮 使用browser action 在工具栏添加按钮 manifest.json { … …
"browser_action" : { "default_icon" : "icon.png", "default_title" : "焦点员工通讯录", "default_popup" : "popup.html" } }
例子1:员工查询 3. 使用跨域ajax 添加权限 书写代码 manifest.json { … … "permissions"
: [ "http://oa.vemic.com/*" ] }
例子2:BBS通知 • 架构 popup popup page background page web page
服务器 Ajax交互 修改badge 浏览器的 WebDB
例子2:BBS通知 1. 编写服务器端 2. 添加带popup页面的按钮
例子2:BBS通知 3. 添加background页面 – 长生命周期的js – 所有Chrome进程共享一份 – 一般用于执行后台任务 manifest.json
{ … … "background" : { "scripts" : ["background.js"] } }
例子2:BBS通知 4. 修改badge – 图标上的数字徽章 – 使用Chrome Extension API •
chrome.browserAction.setBadgeText(); • chrome.browserAction.setBadgeBackgroundColor();
例子3:屏蔽选择提示 • 架构 content scripts web page 修改页面DOM
例子3:屏蔽选择提示 • 添加Content Scripts – 运行于特定页面上的脚本 – 不能使用Chrome Extension API
– 运行于“沙箱”中,不用担心全局变量污染 manifest.json { … … "content_scripts" : [ { "matches" : ["http://baidu.com/*"], "js" : ["sth.js"], "css" : ["sth.css"] } ] }
例子3:屏蔽选择提示 • 代码实现 – 针对网易新闻 var ne = document.getElementById("btn_wrapper"); ne.parentNode.removeChild(ne);
– 针对新浪微博 #selectionShare img{ display: none; } – 配置文件
debug • background • popup • content scripts
打包发布
自动更新 manifest.json { … … "update_url" : "http://myhost.com/ext/updates.xml" }
编写技巧 • 代码只需兼容Chrome即可 所以… 让浏览器兼容性玩儿蛋去吧!
编写技巧 • 使用HTML5/CSS3/ECMAScript5 – 使用ES5 – 使用HTML5 • 参见例子2 HTML5
WebDB • 抛弃jQuery document.querySelectorAll(selector) – 使用CSS3
Q&A