Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Chrome Extension
Search
周祺
February 28, 2011
Programming
410
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Chrome Extension
Chrome插件开发
周祺
February 28, 2011
More Decks by 周祺
See All by 周祺
Mobile Web的性能优化与测试
zhouqicf
7
410
Web App
zhouqicf
1
250
Web App开发
zhouqicf
4
340
f2e @ 2012
zhouqicf
6
200
Photoshop影像修饰艺术
zhouqicf
4
430
前端和视觉间的故事
zhouqicf
1
240
CSS模块化
zhouqicf
2
270
Other Decks in Programming
See All in Programming
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
610
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
3.8k
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
270
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
golang-bob.pdf
iwatsukayura
0
130
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
220
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
430
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
160
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
570
Technical Leadership for Architectural Decision Making
baasie
3
600
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Tell your own story through comics
letsgokoyo
1
1.1k
A Soul's Torment
seathinner
8
3.8k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Leo the Paperboy
mayatellez
10
2.4k
Practical Orchestrator
shlominoach
192
12k
Skip the Path - Find Your Career Trail
mkilby
1
260
Producing Creativity
orderedlist
PRO
348
41k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Transcript
Chr me Extension 口碑F2E-由校 2011-02-28
f2e !== Future.f2e HTML + CSS + JAVASCRIPT http://www.adobe.com/cn/devnet/air/ajax/
f2e !== Future.f2e
“你很幸运,因为Chrome插件开发是如此简单,你不需要明白什么是 ActiveX,不需要知道什么叫COM,嗯,让他们一边凉快去吧,这里只有 HTML & Javascript,这里是互联网的世界!” 前端是多么幸运,因为Chrome插件开发对于我们来说是如此简单,这里 只有HTML & CSS &
Javascript,这里是我们的世界! -- via youxiao 互联网前端的世界
Enjoy ! CSS3 ! HTML5 ! audio
! application cache ! canvas ! geolocation ! local storage ! Notifications ! session storage ! video ! web database ! Jquery、YUI、ExtJs……
Chrome APIs ! Bookmarks ! ContextMenus ! I18n ! Omnibox
! History ! A8 ! …
Files
The manifest file { "name" : "Code Cola", //插件名称(i18n 下使用
”__MSG_key__”) "version" : "1.2.2", //插件版本(发布插件时读取该版本号,必须唯一) "default_locale“ : "en", //默认语言 "description" : "Gets information from Google.", //插件描述 //图标 "icons" : { "128": "128.png", "48": "48.png", "32": "32.png", "24": "24.png" }, "background_page": "bg.html", // background_page "options_page": "options.html", //配置⻚页 //插件权限(更改设置时,谷歌会对用户进行提醒) "permissions": ["tabs", "*://*/*"], //工具栏上的按钮图标 "browser_action": { "default_title": "code cola", "default_icon": "codecola.png", "default_popup": "popup.html" //popup⻚页面 } }
Extension UIs Background.html Content scripts Popup.html Execute Js
Background.html Manifest.json : { “background_page”: “bg.html” } //显示有几封新邮件 chrome.browserAction.setBadgeText(object details)
//默认为蓝色的icon,有新邮件时,更改成红色的icon chrome.browserAction.setIcon(object details) //mouseover时显示“有n封新邮件”的title chrome.browserAction.setTitle(object details)
Content scripts Manifest.json : { "content_scripts": [ { "matches": ["*://*/*"],
"css": ["codecola.css"], "js": ["codecola.js"] } ] }
Browser Actions – Popup Manifest.json : { "browser_action": [ {
"default_icon": ["codecola.png"], "default_title": ["codecola"], "default_popup": ["popup.html"] } ] }
Browser Actions – execute JS Background.html: //code chrome.browserAction.onClicked.addListener(function(tab){ chrome.tabs.executeScript(tab.id,{ code:"document.body.bgColor='red'
" }); }); //file chrome.browserAction.onClicked.addListener(function(tab) { chrome.tabs.executeScript(tab.id, {file: "codecola.js"}, function(){ chrome.tabs.insertCSS(id, { file: "codecola.css " }); }); });
Communication
Communication //listener ( background.html ) chrome.extension.onRequest.addListener(function(request, sender, sendResponse){ sendResponse({ "action":
localStorage["codecola_getLink_action"] }); }); // requester ( content Js ) chrome.extension.sendRequest("getUrls", function(response) { console.log(response.action); }); Ps: 在background.html里无法直接操作⻚页面的dom
Communication p 用“Content scripts”来操作DOM p “Content scripts”和“background.html”通过 “chrome.extension”,以事件的方式来进行交互
Options manifest.json: { "options_page": "options.html" } option.html: localStorage["codecola_getLink_action"] = action;
Internationalization (i18n) manifest.json: { "name": "__MSG_messagename__" } Content js: chrome.i18n.getMessage("messagename")
messages.json: { "name": { "message" : "code cola", "description": "xxx" } } http://code.google.com/chrome/extensions/i18n.html
Debug
Learn
Pack “.pem”文件即是该插件的“私有密钥”,第一次打包时生成该密钥
Install
Publish https://chrome.google.com/webstore/developer/update
Have a Try – Apps https://dl-web.dropbox.com/get/dev/Chrome/apps.crx?w=4ea0e4eb
Have a Try – Apps
Have a Try – switch work space 点击浏览器 工具栏图标 获取当前
Tab的ID 改变当前 Tab的Url https://dl-web.dropbox.com/get/dev/Chrome/switch%20work%20space.crx?w=544cade7&dl=1
Try – switch work space https://dl-web.dropbox.com/get/dev/Chrome/switch%20work%20space.crx?w=544cade7
Try – switch work space view-source:https://dl-web.dropbox.com/get/dev/Chrome/switch%20work%20space/background.html?w=8c8998f6
Have a Try – switch work space If KXT? update_rpc.php
Excute Js Code Update Url
Resource http://code.google.com/chrome/extensions/getstarted.html http://code.google.com/intl/zh-CN/chrome/webstore/docs/index.html
Q&A
Thanks.