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
750
chrome 插件开发
edokeh
April 23, 2012
Tweet
Share
More Decks by edokeh
See All by edokeh
Backbone 开发实战
edokeh
0
210
新一站 HTML5 触屏版开发总结
edokeh
34
8.5k
模块化的Javascript开发-FTF
edokeh
16
1.2k
iphone webapp入门实战
edokeh
14
840
REST实践指南
edokeh
12
650
Other Decks in Programming
See All in Programming
オブザーバビリティ駆動開発って実際どうなの?
yohfee
3
700
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
1
130
Rails Girls Tokyo 18th GMO Pepabo Sponsor Talk
yutokyokutyo
0
200
Python’s True Superpower
hynek
0
200
ご飯食べながらエージェントが開発できる。そう、Agentic Engineeringならね。
yokomachi
1
280
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
120
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
0
210
Windows on Ryzen and I
seosoft
0
140
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
520
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
450
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
110
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
230
Featured
See All Featured
Are puppies a ranking factor?
jonoalderson
1
3.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Bash Introduction
62gerente
615
210k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
130
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
280
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
200
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
190
Information Architects: The Missing Link in Design Systems
soysaucechin
0
810
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Skip the Path - Find Your Career Trail
mkilby
1
72
Thoughts on Productivity
jonyablonski
75
5.1k
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