摘要:跨域請(qǐng)求跨域問(wèn)題,是開(kāi)發(fā)中一直以來(lái)需要注意的問(wèn)題。則發(fā)送通道的發(fā)送給監(jiān)聽(tīng)此消息的外部擴(kuò)展。完整方法此處,為必選參數(shù),為回調(diào)函數(shù)。回調(diào)函數(shù)接收到的參數(shù)有三個(gè),分別是和,即消息內(nèi)容,消息發(fā)送者相關(guān)信息和相應(yīng)函數(shù)。是發(fā)起消息的標(biāo)簽。
第二章簡(jiǎn)介
第二章較第一章復(fù)雜許多。書(shū)中雖寥寥21頁(yè),內(nèi)容卻也不少。涵蓋了8個(gè)小節(jié)。
2.1 操作用戶(hù)正在瀏覽的頁(yè)面
2.2 跨域請(qǐng)求
2.3 常駐后臺(tái)
2.4 帶選項(xiàng)頁(yè)面的擴(kuò)展
2.5 擴(kuò)展頁(yè)面間的通信
2.6 存儲(chǔ)數(shù)據(jù)
2.7 i18n
2.1 操作用戶(hù)正在瀏覽的頁(yè)面實(shí)際上就是對(duì)用戶(hù)當(dāng)前瀏覽器頁(yè)面的DOM進(jìn)行操作。通過(guò)manifest.json中的content_scripts屬性,可 以指定將哪些腳本注入到哪些頁(yè)面中,當(dāng)用戶(hù)訪問(wèn)這些頁(yè)面后,相應(yīng)的腳本既可自動(dòng)運(yùn)行,從而對(duì)頁(yè)面DOM進(jìn) 行操作。
content_scripts屬性值為數(shù)組類(lèi)型,數(shù)組的每個(gè)元素可以包含如下屬性:
matches //定義哪些頁(yè)面會(huì)被注入腳本 exclude_matches // 定義哪些頁(yè)面不會(huì)注入腳本 js // 對(duì)應(yīng)要注入的js文件 css //對(duì)應(yīng)要注入的css文件 run_at //定義何時(shí)進(jìn)行注入 all_frames //定義腳本是否會(huì)注入到嵌入式框架中 include_globs //全局url匹配需要進(jìn)行注入的頁(yè)面 exclude_globs //全局url匹配不被注入的腳本的頁(yè)面
簡(jiǎn)單的說(shuō),如果url匹配matchew的值同時(shí)頁(yè)匹配include_globs的值,會(huì)被注入。
如果url匹配exclude_matches的值或者匹配exclude_globs的值,則不會(huì)被注入。
注意:腳本知識(shí)共享頁(yè)面的DOM,但是DOM中的自定義屬性不會(huì)被共享,并且不共享頁(yè)面內(nèi)嵌javascript 的命名空間。也就是說(shuō),當(dāng)前頁(yè)面的javascript有一個(gè)全局變量a,注入的腳本中也有一個(gè)全局變量a,兩者 不會(huì)互相干擾。
2.2 跨域請(qǐng)求跨域問(wèn)題,是web開(kāi)發(fā)中一直以來(lái)需要注意的問(wèn)題。 但是在chrome擴(kuò)展中,為了真正使chrome插件強(qiáng)大起來(lái),chrome允許chrome擴(kuò)展應(yīng)用不必受限于跨域限制。 但是,出于安全考慮,需要在manifest.json文件中的permissions屬性中生命需要跨域的權(quán)限。
舉例如下:
{ ... "permissions": [ "_://_.baidu.com/*" ] }2.3 常駐后臺(tái)
當(dāng)我們希望擴(kuò)展或應(yīng)用在自動(dòng)運(yùn)行并常駐后臺(tái)時(shí)就需要用到本節(jié)的知識(shí)了。
在manifest.json中指定background域可以使擴(kuò)展常駐后臺(tái)。background包括3中屬性,分別是scripts,
page和persistent。
如果指定了scripts屬性,chrome會(huì)在擴(kuò)展啟動(dòng)時(shí)自動(dòng)創(chuàng)建一個(gè)包含所有指定腳本的頁(yè)面;
如果指定了page屬性,則chrome會(huì)將指定的html文件自動(dòng)加載作為后臺(tái)頁(yè)面運(yùn)行;
persistent則定義了常駐后臺(tái)的方式,true時(shí),表示一直在后臺(tái)運(yùn)行,占用內(nèi)存,不友好,不推薦。false為按需運(yùn)行,也就是chrome后來(lái)提出的Event Page,如非必要請(qǐng)?jiān)O(shè)置為false。默認(rèn)值為true。
2.4 帶選項(xiàng)的頁(yè)面的擴(kuò)展有一些擴(kuò)展允許用戶(hù)進(jìn)行個(gè)性化設(shè)置,這樣就需要向用戶(hù)提供一個(gè)選項(xiàng)頁(yè)面。
同樣,這需要通過(guò)在manifest.json中設(shè)置。對(duì)應(yīng)的屬性為options_page。
例子如下:
{ ... "options_page": "options.html" }2.5 擴(kuò)展頁(yè)面間的通信
有時(shí)需要讓同一個(gè)擴(kuò)展中的不同頁(yè)面之間,或者不同擴(kuò)展的多個(gè)頁(yè)面之間相互傳輸數(shù)據(jù),以獲得彼此的狀態(tài)。
chrome提供了4個(gè)有關(guān)接口,分別是:
runtime.sendMessage runtime.onMessage runtime.connect runtime.onConnect
書(shū)中只講解了前者,后者為更高級(jí)的接口,留待讀者自己去研究。
此處我查找到一個(gè)比較好的文檔,與大家參考。
runtime.connect
chrome.runtime.sendMessage(extensionId,message,options,callback)
extensionId為所發(fā)送消息的目標(biāo)擴(kuò)展,默認(rèn)為擴(kuò)展本身。
message 為要發(fā)送的內(nèi)容,類(lèi)型隨意。
options 為對(duì)象類(lèi)型包含了一個(gè)值為布爾型的includeTlsChannelId屬性。true則發(fā)送TLS通道的ID
發(fā)送給監(jiān)聽(tīng)此消息的外部擴(kuò)展。這個(gè)參數(shù)大部分情況下可不必理睬。
callback是回調(diào)函數(shù),用于接收返回結(jié)果。
runtime.onMessage完整方法chrome.runtime.onMessage.addListener(callback)
此處,callback為必選參數(shù),為回調(diào)函數(shù)。回調(diào)函數(shù)接收到的參數(shù)有三個(gè),分別是message,
sender和sendResponse,即消息內(nèi)容,消息發(fā)送者相關(guān)信息和相應(yīng)函數(shù)。其中,sender對(duì)象包含4個(gè)屬性,分別是tab,id,url,tlsChannelId。tab是發(fā)起消息的標(biāo)簽。
三種方法以及適用情況
html5的localStorage //適用于一般的擴(kuò)展
chrome提供的存儲(chǔ)API //適用于保存結(jié)構(gòu)稍微復(fù)雜些的數(shù)據(jù),可保存任意類(lèi)型的數(shù)據(jù)
使用Web SQL Database //使用的較少,比較復(fù)雜,需要使用SQL對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀寫(xiě)操作,適用于數(shù)據(jù)量龐大的應(yīng)用
localstoragelocalstorage.getItem() localstorage.setItem() localstorage.removeItem()chrome提供的存儲(chǔ)API
使用時(shí)必須在manifest.json中的permissions聲明"storage",之后才有權(quán)限調(diào)用。
chrome的存儲(chǔ)API提供兩種存儲(chǔ)區(qū)域,分別是sync與local。區(qū)別在于sync存儲(chǔ)區(qū)域會(huì)根據(jù)用戶(hù)當(dāng)前在
chrome上登陸的google賬戶(hù)自動(dòng)同步數(shù)據(jù),當(dāng)無(wú)網(wǎng)絡(luò)連接可用時(shí),兩者一致。
chrome提供5種方法,分別是
chrome.storage.sync.get(keys,function(result){}) chrome.storage.sync.getBytesInUse(keys,function(bytes){}) chrome.storage.sync.set(items,function(){}) chrome.storage.sync.remove(keys,function(){}) chrome.storage.sync.clear(function({}))
sync也可以替換為local
使用Web SQL Database3個(gè)核心方法
openDatabase //與數(shù)據(jù)庫(kù)建立連接 transaction //執(zhí)行查詢(xún) executeSql //執(zhí)行SQL語(yǔ)句2.7 i18
使用i18n借口實(shí)現(xiàn)擴(kuò)展應(yīng)用程序的國(guó)際化。
亮瞎~國(guó)際化~
詳情見(jiàn)官方文檔
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78501.html
摘要:第三章目錄簡(jiǎn)述右鍵菜單桌面提醒簡(jiǎn)述這部分對(duì)于前端的人來(lái)說(shuō)是基礎(chǔ)。已經(jīng)將的權(quán)限開(kāi)放了。制作實(shí)時(shí)查詢(xún)美元價(jià)格的擴(kuò)展代碼部分部分查詢(xún)美元當(dāng)日價(jià)格圖片請(qǐng)自行選用。 第三章目錄 3.1 CSS簡(jiǎn)述 3.2 Browser Actions 3.3 右鍵菜單 3.4 桌面提醒 3.5 omnibox 3.6 Page Actions 3.1 CSS簡(jiǎn)述 這部分對(duì)于前端的人來(lái)說(shuō)是基礎(chǔ)。就不說(shuō)了 3...
摘要:擴(kuò)展及應(yīng)用介紹與區(qū)別介紹支持開(kāi)發(fā)者為其編寫(xiě)各種各樣的擴(kuò)展與應(yīng)用來(lái)擴(kuò)充其功能。用處安裝擴(kuò)展之后,就會(huì)讀取擴(kuò)展中的文件。結(jié)語(yǔ)以上就是第一章的總結(jié),接下來(lái)的筆記,敬請(qǐng)期待原書(shū)項(xiàng)目代碼下載擴(kuò)展及其應(yīng)用開(kāi)發(fā) 讀書(shū)筆記介紹 寒假想自己做一個(gè)chrome擴(kuò)展,便從圖書(shū)館借了這本書(shū)。同時(shí),為了培養(yǎng)自己的好習(xí)慣,做沉淀,便讀一章寫(xiě)一篇總結(jié),全書(shū)總共10章,將會(huì)分為10篇博文。歡迎大家多多指正,也希望大家...
摘要:目錄結(jié)構(gòu)書(shū)簽歷史管理擴(kuò)展與應(yīng)用標(biāo)簽書(shū)簽第一步,在中聲明書(shū)簽的個(gè)屬性,并不是每個(gè)書(shū)簽都有這個(gè)對(duì)象,如書(shū)簽文件夾就不具有屬性。調(diào)整書(shū)簽位置更新書(shū)簽刪除書(shū)簽和空的書(shū)簽分組刪除包含書(shū)簽的書(shū)簽分組獲取完整的書(shū)簽內(nèi)容書(shū)簽的事件第一步,先行在中聲明。 目錄結(jié)構(gòu) 4.1 書(shū)簽 4.2 Cookies 4.3 歷史 4.4 管理擴(kuò)展與應(yīng)用 4.5 標(biāo)簽 4.6 overridePages 4.1 書(shū)...
摘要:目錄結(jié)構(gòu)下載網(wǎng)絡(luò)請(qǐng)求代理系統(tǒng)信息本章講解的是部分較為高級(jí)的,以供哪些有更高要求的讀者閱讀。對(duì)于目前的網(wǎng)絡(luò)請(qǐng)求,筆記實(shí)用的功能包括阻斷鏈接,更改和重定向。系統(tǒng)信息聲明方法三個(gè)接口都提供了的方法 目錄結(jié)構(gòu) 5.1 下載 5.2 網(wǎng)絡(luò)請(qǐng)求 5.3 代理 5.4 系統(tǒng)信息本章講解的是部分較為高級(jí)的API,以供哪些有更高要求的讀者閱讀。 5.1 下載 聲明 permissions: [ ...
摘要:本文是學(xué)習(xí)與實(shí)踐系列的第五篇文章。實(shí)際上,消息推送與提醒是兩個(gè)功能和。在這一篇里,我們先來(lái)學(xué)習(xí)如何使用進(jìn)行消息推送。而當(dāng)服務(wù)端要推送消息時(shí),會(huì)使用私鑰對(duì)發(fā)送的數(shù)據(jù)進(jìn)行數(shù)字簽名,并根據(jù)數(shù)字簽名生成一個(gè)叫請(qǐng)求頭。 《PWA學(xué)習(xí)與實(shí)踐》系列文章已整理至gitbook - PWA學(xué)習(xí)手冊(cè),文字內(nèi)容已同步至learning-pwa-ebook。轉(zhuǎn)載請(qǐng)注明作者與出處。 本文是《PWA學(xué)習(xí)與實(shí)踐》系...
閱讀 2556·2021-09-22 15:25
閱讀 2963·2021-09-14 18:03
閱讀 1211·2021-09-09 09:33
閱讀 1699·2021-09-07 09:59
閱讀 2930·2021-07-29 13:50
閱讀 1500·2019-08-30 15:44
閱讀 1715·2019-08-29 16:22
閱讀 1287·2019-08-29 12:49