摘要:第三章目錄簡述右鍵菜單桌面提醒簡述這部分對于前端的人來說是基礎(chǔ)。已經(jīng)將的權(quán)限開放了。制作實時查詢美元價格的擴展代碼部分部分查詢美元當(dāng)日價格圖片請自行選用。
第三章目錄
3.1 CSS簡述
3.2 Browser Actions
3.3 右鍵菜單
3.4 桌面提醒
3.5 omnibox
3.6 Page Actions
3.1 CSS簡述這部分對于前端的人來說是基礎(chǔ)。就不說了
3.2 Browser Action 圖標(biāo)設(shè)置chrome一般會選擇19像素的圖片顯示在工具欄,但若用戶使用視網(wǎng)膜屏幕的計算機,chrome則會選擇38像
素的圖片。兩種圖片并非都要指定,指定一個,瀏覽器頁會自動拉伸圖片適應(yīng)顯示需要,但是可能會很難看。
"browser_action": { "default_icon": { "19": "images/icon19_0.png", //鍵值名19與38并不指代像素,只是作者自己為了標(biāo)示 "38": "images/icon38_0.png" //chrome會自動識別像素,并予以選用 } }
動態(tài)更改圖標(biāo)的方法
chrome.browserAction.setIcon(details,callback)
details的類型為對象,可以包含以下三種屬性,分別是imagesData,path和tabId。
imagesData說明
imagesData的值既可以是imagesData也可以是對象。
{size:imagesData}
imagesData是指圖片的像素數(shù)據(jù),可以通過HTML的canvas標(biāo)簽獲取。
path說明
path的值既可以是字符串也可以是對象,如果是對象,結(jié)構(gòu)為{size:imagePath}
tabId說明
tabId的值限定了圖標(biāo)將在瀏覽哪個標(biāo)簽頁時被更改。
callback回調(diào)函數(shù)沒有可接收的結(jié)果
popup頁面當(dāng)用戶點擊擴展圖標(biāo)時,彈出的頁面被成為popup頁面。
popup頁面更多的用來展示結(jié)構(gòu),而并非處理數(shù)據(jù)。因為關(guān)閉popup頁面等于關(guān)閉了相應(yīng)的標(biāo)簽頁。頁面不會
繼續(xù)運行,等再次打開popup頁面時,所有的Dom與js空間遍歷都會重新創(chuàng)建。
如果需要實時處理數(shù)據(jù),則需要創(chuàng)建一個在后端一直運行的頁面或者腳本(同時記得在manifest.json的
background域來聲明)
幾個注意項:
給出頁面尺寸
不要模仿Chrome的原生UI
使用帶有滾動條的DIV容器
設(shè)計一個更好的滾動條樣式
屏蔽右鍵菜單
使用外部引用腳本
不要在popup頁面的js空間變量中保存數(shù)據(jù)
標(biāo)題和badge將鼠標(biāo)移至擴展圖片上,等待片刻就會顯示擴展的title。
設(shè)置方式如下
"browser_action": { "default_title": "Turtle" },
動態(tài)設(shè)置方法
chrome.browserAction.setTitle({title: "This is a new title"});
badge常用來顯示我們未閱讀的數(shù)量等等,比如郵件,微博等。
設(shè)置方式
chrome.browserAction.setBadgeBackgroundColor({color: "#0000ff"}); chrome.browserAction.setBadgeText({text: "dog"});
注:背景顏色也可以用使用rgba。
2.3 右鍵菜單首先,在manifest.json中的permissions域中聲明contextMenus權(quán)限。
"permissions": [ "contextMenus" ]
第二步,設(shè)置右鍵菜單項上顯示的擴展圖標(biāo)
"icon": { "16": "icon16.png" }
三種操作方法:
chrome.contextMenus.create()
chrome.contextMenus.update()
chrome.contextMenus.remove()
舉例如下:
chrome.contextMenus.create({ type: "normal", //類型有normal,radio,checkbox,separator title: "menu A", id: "a", //標(biāo)識每個選項 parentId: "e", //標(biāo)示父級選項 contexts: ["link"] //完整的取值還有all,page,frame,selection,link,editable, //image,video,audio,launcher。表示右鍵菜單顯示的時機 });
update可以動態(tài)更改菜單屬性,只需要指定需要更改的菜單id和所需要修改的屬性即可,remove方法可以刪
除指定的菜單欄選項。
"permissions": [ "notifications" ];//manifest.json中聲明 "web_accessible_resources": [ "icon48.png" ] //對于桌面窗口中顯示的圖片,需要先行聲明js部分
var notification = webkitNotiofications.createNotiofication( "icon48.png", "Notiofication Demo", "Merry Christmas" ); //建立一個提醒 notification.show();//創(chuàng)建之后不會立即顯示,需要調(diào)用show4種事件
ondisplay
onerror
onclose
onclick
除此之外,還可以通過notification.cancel()主動關(guān)閉提醒窗口
什么是omnibox呢,就是chrome 的地址欄,其實這是一個多功能輸入框,google稱之為omnibox。Google
已經(jīng)將omnibox的權(quán)限開放了。
"omnibox": { "keyword": "hamster"} //首先在manifest.json聲明并指定keyword
omnibox有4種事件
chrome.omnibox.onInputStarted
chrome.omnibox.onInputChanged
chrome.omnibox.onInputEntered
chrome.omnibox.onInputCancelled
Page ActionsPage Actions 與BrowserAction非常相似,除了沒有badge意外,后者擁有的方法前者都有。另一個區(qū)別
在于,前者圖標(biāo)并非一直顯示。所有前者可以自由控制顯示或者隱藏,如下。
chrome.pageAction.show(tabId); chrome.pageAction.hide(tabId);制作實時查詢美元價格的擴展
js代碼部分
function httpRequest(url, callback){ var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { callback(xhr.responseText); } } xhr.send(); } function updateAmount(amount, exchange){ amount = Number(amount); if(isNaN(amount) || !amount){ exchange([{ "content": "$1 = ¥"+price, "description": "$1 = ¥"+price },{ "content": "¥1 = $"+(1/price).toFixed(6), "description": "¥1 = $"+(1/price).toFixed(6) }]); } else{ exchange([{ "content": "$"+amount+" = ¥"+(amount*price).toFixed(2), "description": "$"+amount+" = ¥"+(amount*price).toFixed(2) },{ "content": "¥"+amount+" = $"+(amount/price).toFixed(6), "description": "¥"+amount+" = $"+(amount/price).toFixed(6) }]); } } function gotoYahoo(text, disposition){ window.open("http://finance.yahoo.com/q?s=USDCNY=X"); } var url = "http://query.yahooapis.com/v1/public/yql?q=select%20Rate%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22USDCNY%22)&env=store://datatables.org/alltableswithkeys&format=json"; var price; httpRequest(url, function(r){ price = JSON.parse(r); price = price.query.results.rate.Rate; price = Number(price); }); chrome.omnibox.setDefaultSuggestion({"description":"Find current USD price."}); chrome.omnibox.onInputChanged.addListener(updateAmount); chrome.omnibox.onInputEntered.addListener(gotoYahoo);
manifest部分
{ "manifest_version": 2, "name": "USD Price", "version": "1.0", "description": "查詢美元當(dāng)日價格", "background": { "scripts": [ "js/background.js" ] }, "icons": { "16": "images/icon16.png" }, "omnibox": { "keyword": "usd" }, "permissions": [ "*://query.yahooapis.com/*" ] }
圖片請自行選用。
擴展使用方法:載入擴展之后,在瀏覽器地址欄輸入"usd",然后按空格鍵或者Tab鍵就可以使用了。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/91613.html
摘要:擴展及應(yīng)用介紹與區(qū)別介紹支持開發(fā)者為其編寫各種各樣的擴展與應(yīng)用來擴充其功能。用處安裝擴展之后,就會讀取擴展中的文件。結(jié)語以上就是第一章的總結(jié),接下來的筆記,敬請期待原書項目代碼下載擴展及其應(yīng)用開發(fā) 讀書筆記介紹 寒假想自己做一個chrome擴展,便從圖書館借了這本書。同時,為了培養(yǎng)自己的好習(xí)慣,做沉淀,便讀一章寫一篇總結(jié),全書總共10章,將會分為10篇博文。歡迎大家多多指正,也希望大家...
摘要:目錄結(jié)構(gòu)書簽歷史管理擴展與應(yīng)用標(biāo)簽書簽第一步,在中聲明書簽的個屬性,并不是每個書簽都有這個對象,如書簽文件夾就不具有屬性。調(diào)整書簽位置更新書簽刪除書簽和空的書簽分組刪除包含書簽的書簽分組獲取完整的書簽內(nèi)容書簽的事件第一步,先行在中聲明。 目錄結(jié)構(gòu) 4.1 書簽 4.2 Cookies 4.3 歷史 4.4 管理擴展與應(yīng)用 4.5 標(biāo)簽 4.6 overridePages 4.1 書...
摘要:跨域請求跨域問題,是開發(fā)中一直以來需要注意的問題。則發(fā)送通道的發(fā)送給監(jiān)聽此消息的外部擴展。完整方法此處,為必選參數(shù),為回調(diào)函數(shù)。回調(diào)函數(shù)接收到的參數(shù)有三個,分別是和,即消息內(nèi)容,消息發(fā)送者相關(guān)信息和相應(yīng)函數(shù)。是發(fā)起消息的標(biāo)簽。 第二章簡介 第二章較第一章復(fù)雜許多。書中雖寥寥21頁,內(nèi)容卻也不少。涵蓋了8個小節(jié)。 2.1 操作用戶正在瀏覽的頁面 2.2 跨域請求 2.3 常駐后臺 2....
摘要:目錄結(jié)構(gòu)下載網(wǎng)絡(luò)請求代理系統(tǒng)信息本章講解的是部分較為高級的,以供哪些有更高要求的讀者閱讀。對于目前的網(wǎng)絡(luò)請求,筆記實用的功能包括阻斷鏈接,更改和重定向。系統(tǒng)信息聲明方法三個接口都提供了的方法 目錄結(jié)構(gòu) 5.1 下載 5.2 網(wǎng)絡(luò)請求 5.3 代理 5.4 系統(tǒng)信息本章講解的是部分較為高級的API,以供哪些有更高要求的讀者閱讀。 5.1 下載 聲明 permissions: [ ...
摘要:本文是學(xué)習(xí)與實踐系列的第五篇文章。實際上,消息推送與提醒是兩個功能和。在這一篇里,我們先來學(xué)習(xí)如何使用進(jìn)行消息推送。而當(dāng)服務(wù)端要推送消息時,會使用私鑰對發(fā)送的數(shù)據(jù)進(jìn)行數(shù)字簽名,并根據(jù)數(shù)字簽名生成一個叫請求頭。 《PWA學(xué)習(xí)與實踐》系列文章已整理至gitbook - PWA學(xué)習(xí)手冊,文字內(nèi)容已同步至learning-pwa-ebook。轉(zhuǎn)載請注明作者與出處。 本文是《PWA學(xué)習(xí)與實踐》系...
閱讀 3557·2021-08-02 13:41
閱讀 2390·2019-08-30 15:56
閱讀 1520·2019-08-30 11:17
閱讀 1174·2019-08-29 15:18
閱讀 580·2019-08-29 11:10
閱讀 2671·2019-08-26 13:52
閱讀 508·2019-08-26 13:22
閱讀 2949·2019-08-23 15:41