亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Firefox瀏覽器擴(kuò)展開發(fā)原理

        2018-12-08 09:29:34朱德平
        關(guān)鍵詞:擴(kuò)展基本原理瀏覽器

        朱德平

        摘要:本文講述了Firefox瀏覽器擴(kuò)展開發(fā)的原理,包括擴(kuò)展API、后臺(tái)腳本與內(nèi)容腳本、用戶界面、配置、權(quán)限與管理等內(nèi)容。并講解了擴(kuò)展開發(fā)的部分主要代碼范例。

        關(guān)鍵詞:擴(kuò)展;開發(fā);基本原理;Firefox;瀏覽器

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)08-0121-01

        瀏覽器擴(kuò)展的用途是為瀏覽器添加特性和功能。按用途大致分為三類:一是對(duì)瀏覽器本身的補(bǔ)充和增強(qiáng)。例如翻譯、廣告移除、網(wǎng)頁剪切和批注、開發(fā)和調(diào)試輔助等。二是為某一個(gè)或一類網(wǎng)站提供附加的服務(wù)。例如購物比價(jià)、視音頻地址解析及下載等。三是基于擴(kuò)展的獨(dú)立應(yīng)用。例如待辦事項(xiàng)和時(shí)間管理、網(wǎng)頁小游戲等。本文首先講述Firefox擴(kuò)展開發(fā)的基本原理和部分主要代碼范例。

        1 基本原理

        Firefox擴(kuò)展開發(fā)基于常規(guī)的HTML、CSS和JavaScript技術(shù),和開發(fā)網(wǎng)頁所用的技術(shù)相同,另外添加了一組專用于擴(kuò)展開發(fā)的技術(shù)特性,下面分別論述。

        1.1 擴(kuò)展API

        Firefox為擴(kuò)展提供了一組擴(kuò)展API(WebExtensions API),作為擴(kuò)展的運(yùn)行時(shí)API,目前包含40余個(gè)功能模塊,每個(gè)模塊包含若干函數(shù)、屬性、事件和類型,提供一類功能。具體包括訪問和操縱瀏覽器的菜單、書簽、剪切板、下載、歷史、代理、cookies、本地存儲(chǔ)功能;瀏覽器用戶界面與擴(kuò)展的綁定;權(quán)限和安全管理;擴(kuò)展內(nèi)部腳本、不同擴(kuò)展、擴(kuò)展與本地應(yīng)用程序之間的通信;擴(kuò)展安裝、移除管理等。所有的擴(kuò)展API都放在browser名字空間下,每個(gè)子模塊在browser下又有自己的名字空間。擴(kuò)展API中有許多異步函數(shù),是基于Promise異步機(jī)制。WebExtensions API是跨瀏覽器的API,因此為Firefox開發(fā)的插件只需要進(jìn)行少量修改,就可以在Google Chrome和Microsoft Edge中運(yùn)行。

        1.2 后臺(tái)腳本和內(nèi)容腳本

        Firefox擴(kuò)展由JavaScript代碼以及附加的HTML、CSS等文件組成,JavaScript代碼主要有后臺(tái)腳本(background scripts)和內(nèi)容腳本(content script)兩種。后臺(tái)腳本運(yùn)行在獨(dú)立的進(jìn)程內(nèi),當(dāng)擴(kuò)展啟動(dòng)時(shí),后臺(tái)腳本開始運(yùn)行,首先執(zhí)行擴(kuò)展初始化、事件綁定等操作,隨后進(jìn)入事件處理循環(huán),當(dāng)接受到停止運(yùn)行事件時(shí),腳本結(jié)束執(zhí)行。后臺(tái)腳本可以使用所有的擴(kuò)展API以及JavaScript語言規(guī)范內(nèi)置的函數(shù)、對(duì)象等。但是后臺(tái)腳本不能對(duì)瀏覽器當(dāng)前顯示的網(wǎng)頁進(jìn)行操作,內(nèi)容腳本可以像網(wǎng)頁腳本(網(wǎng)站網(wǎng)頁自帶的JavaScript代碼)一樣嵌入到網(wǎng)頁上下文中,利用標(biāo)準(zhǔn)的DOM API操縱網(wǎng)頁元素。 需要注意內(nèi)容腳本只能看到一個(gè)“干凈的網(wǎng)頁DOM視圖”,意思一是內(nèi)容腳本不能查看網(wǎng)頁腳本定義的JavaScript變量;二是如果網(wǎng)頁腳本重新定義了一個(gè)內(nèi)置DOM屬性,內(nèi)容腳本無法看到重新定義的屬性,只能看到原始的屬性,這種特性稱作“Xray vision”,是為了使高特權(quán)級(jí)代碼可以安全的訪問由低特權(quán)級(jí)代碼創(chuàng)建的對(duì)象。內(nèi)容腳本和后臺(tái)腳本可以通過消息機(jī)制進(jìn)行通信,互相傳輸數(shù)據(jù)。內(nèi)容腳本只能直接使用擴(kuò)展API的一個(gè)小的子集,但可以通過消息機(jī)制間接的使用其他的擴(kuò)展API。

        1.3 用戶界面

        擴(kuò)展可以通過向?yàn)g覽器添加按鈕或者利用面板和網(wǎng)頁創(chuàng)建自定義界面的形式和用戶進(jìn)行交互,具體共有11種形式,例如瀏覽器工具條按鈕、地址欄按鈕、側(cè)邊欄面板、上下文菜單項(xiàng)、選項(xiàng)頁面等。擴(kuò)展展示給用戶的面板和頁面由HTML、CSS和JavaScript,在JavaScript中可以調(diào)用擴(kuò)展API。

        1.4 配置

        每個(gè)擴(kuò)展必須包含一個(gè)名字為manifest.json的配置文件,對(duì)擴(kuò)展的各項(xiàng)功能進(jìn)行集中裝配和配置,包括30余個(gè)配置參數(shù),例如指定擴(kuò)展調(diào)用的后臺(tái)腳本和內(nèi)容腳本文件、組成用戶界面的HTML文件、按鈕等的圖標(biāo)文件、鍵盤快捷鍵、權(quán)限管理以及擴(kuò)展的名稱、作者、版本信息等。

        1.5 權(quán)限管理

        通過manifest.json中的permissions參數(shù)可以為擴(kuò)展指定各類權(quán)限。權(quán)限分為下面幾種,一是主機(jī)權(quán)限,用于指定擴(kuò)展通過XML Http Request不受跨域限制可以訪問的URL資源以及其它與URL資源訪問相關(guān)的權(quán)限。二是API權(quán)限,用于指定可以在當(dāng)前擴(kuò)展中使用的擴(kuò)展API。三是activeTab權(quán)限,用于指定當(dāng)用戶與擴(kuò)展交互式,是否能以編程的方式動(dòng)態(tài)將JavaScript和CSS注入當(dāng)前活動(dòng)選項(xiàng)卡中的網(wǎng)頁以及能否訪問選項(xiàng)卡的Tab.url,Tab.title和Tab.faviconUrl屬性。另外還可以設(shè)置剪切板和存儲(chǔ)權(quán)限。

        2 代碼范例

        下面列舉部分開發(fā)中常用操作的代碼范例。

        2.1 Manifest.json主要配置

        配置內(nèi)容腳本,當(dāng)用戶頁面訪問百度網(wǎng)站時(shí),腳本content.js嵌入當(dāng)前頁面執(zhí)行。

        "content_scripts": [

        { "matches": ["https://www.baidu.com/*"], "js": ["content.js"] }]

        配置后臺(tái)腳本,當(dāng)擴(kuò)展啟動(dòng)時(shí),運(yùn)行background.js代碼。

        "background": {

        "scripts": ["background.js"] }

        在地址欄中添加擴(kuò)展按鈕。

        " page_action ": {

        "default_icon": { "16": "icon 16.png", "32": "icon32.png" }

        2.2 攔截瀏覽器發(fā)往百度網(wǎng)站的所有Http請(qǐng)求,由預(yù)先定義的handle函數(shù)處理

        browser.webRequest.onBeforeRequest.addListener(

        handle, {urls: ["https://www.baidu.com/"]} ) }

        2.3 內(nèi)容腳本和后臺(tái)腳本的通信

        內(nèi)容腳本中將數(shù)據(jù)data發(fā)往后臺(tái)腳本。

        var port = browser.runtime.connect({name:""});

        port.postMessage(data);

        2.4 后臺(tái)腳本接受數(shù)據(jù)

        后臺(tái)腳本監(jiān)聽內(nèi)容腳本的連接事件,當(dāng)連接成功后,監(jiān)聽內(nèi)容腳本的消息到達(dá)事件,處理接受到的消息。

        function connected(port) {

        port.onMessage.addListener(function(data) {

        console.log(data);

        });}

        browser.runtime.onConnect.addListener(connected);

        3 結(jié)語

        Firefox瀏覽器提供了強(qiáng)大的擴(kuò)展API,使得用戶可以增加和修改瀏覽器功能,同時(shí)相比XUL/XPCOM、Add-on SDK等以前的擴(kuò)展方式簡化了編程,又和其它主流瀏覽器擴(kuò)展相兼容,極大的增強(qiáng)了Firefox瀏覽器的功能和提高了用戶體驗(yàn)。

        猜你喜歡
        擴(kuò)展基本原理瀏覽器
        發(fā)展經(jīng)濟(jì)學(xué)基本原理
        人臉識(shí)別技術(shù)的基本原理與應(yīng)用
        電子制作(2019年14期)2019-08-20 05:43:34
        反瀏覽器指紋追蹤
        電子制作(2019年10期)2019-06-17 11:45:14
        淺談數(shù)據(jù)挖掘和自適應(yīng)算法的應(yīng)用
        多維傳播語境下的播音主持功能與拓展研究
        恒溫晶體振蕩器調(diào)頻范圍擴(kuò)展思考
        環(huán)球?yàn)g覽器
        淺談小學(xué)英語教學(xué)中的情境教學(xué)法
        再見,那些年我們嘲笑過的IE瀏覽器
        UPS電源的基本原理與維護(hù)
        日日摸夜夜添夜夜添一区二区| 亚洲日本中文字幕乱码| 国产91成人精品高潮综合久久| 亚洲人成精品久久久久| 内射爽无广熟女亚洲| 亚洲中文无码成人影院在线播放| 欧美国产伦久久久久久久| 免费av在线视频播放| 亚洲熟妇自偷自拍另类| 国产激情电影综合在线看| 亚洲va欧美va| 美女偷拍一区二区三区| 久久精品中文字幕女同免费| 欧美精品人人做人人爱视频| 天天爽天天爽天天爽| 成人国产精品免费网站| 亚洲成人一区二区三区不卡| 公和我做好爽添厨房中文字幕| 亚洲人成网站77777在线观看| 少妇被粗大猛进进出出| 国产精品亚洲二区在线| 伊人久久大香线蕉av色婷婷色| 国产老熟女狂叫对白| 欧美日韩国产综合aⅴ| 日韩一区二区三区天堂| 午夜福利理论片在线观看播放| 亚洲精品久久中文字幕| 国产精品日本天堂| av在线播放亚洲天堂| 午夜理论片yy44880影院| 可以免费在线看黄的网站| 亚洲精品色播一区二区| 4455永久免费视频| 亚洲中久无码永久在线观看同| 制服丝袜视频国产一区| 日本一区二区三区在线观看视频| 国产精品美女久久久网av| 国产乱妇乱子视频在播放| 久久AⅤ无码精品色午麻豆| 国内精品亚洲成av人片| 黑人巨大跨种族video|