成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

盤點(diǎn) Chrome 插件開發(fā)中那些關(guān)鍵的點(diǎn)!

系統(tǒng) 瀏覽器
本篇文章將基于 v3 版本,盤點(diǎn) Chrome 插件開發(fā)中的一些關(guān)鍵點(diǎn)供大家進(jìn)行參考。

1. 前言

大家好,我是安果!

最近在開發(fā)者模式下調(diào)試 Chrome 插件,發(fā)現(xiàn)安裝擴(kuò)展后默認(rèn)會報錯誤,提示 v2 版本已經(jīng)廢棄,相關(guān) API 功能將在明年不可使用,建議升級到 v3 版本。

本篇文章將基于 v3 版本,盤點(diǎn) Chrome 插件開發(fā)中的一些關(guān)鍵點(diǎn)供大家進(jìn)行參考。

2. 配置

v2 升級到 v3 后,manifest.json 配置文件需要進(jìn)行下面修改

2-1 版本號

需要將 manifest_version 的值設(shè)置為 3。

2-2 action

action 可以指定 Chrome 擴(kuò)展圖標(biāo)設(shè)置、popup 頁面等內(nèi)容。

在 v3 中使用關(guān)鍵字 action 取代 v2 中的關(guān)鍵字 browser_action

//v3
...
"action": {
"default_icon": {
"16": "images/icon16.png",
"32": "images/icon32.png"
},
"default_popup": "popup.html",
"default_title": "HelloWorld"
}
...

2-3 background

在 v2 中,我們可以使用 scripts 關(guān)鍵字指定后臺運(yùn)行的腳本列表,再使用 persistent 關(guān)鍵字設(shè)置運(yùn)行腳本的生命周期。

當(dāng) persistent 設(shè)置為 true 時,腳本會一直在后臺運(yùn)行,因此會占用系統(tǒng)資源

//v2
...
"background": {
"persistent": false,
"scripts": ["background.js"]
}
...

所以在 v3 版本中,使用 service_worker 關(guān)鍵字智能化啟動腳本。

PS:在 v3 中不能通過關(guān)鍵字 persistent 指定腳本的生命周期。

//v3
...
"background": {
"service_worker": "background.js"
}
...

3. 緩存

在 v3 中,使用下面的方式,將鍵值對存儲到緩存中。

//v3
...
//存儲數(shù)據(jù)到緩存
//鍵:
chrome.storage.sync.set({username:'AirPython',password:'123456'},function(){
console.log("保存成功!")
})
...

從緩存中獲取數(shù)據(jù),也有相應(yīng)的 API

//v3
...
//獲取緩存
chrome.storage.sync.get({username:"",password:""},function(items){
//用戶名和密碼不為空
if(items.username&&items.password){
...
}
})
...

4. 定時任務(wù)

在 v2 中實(shí)現(xiàn)定時任務(wù)、延時任務(wù)非常方便,我們只需要在 background.js 創(chuàng)建一個定時任務(wù),然后設(shè)置 persistent 為 true,這樣就能保存定時任務(wù)一直在后臺執(zhí)行。

由于 v3 切換成 service_worker 模式,如果想實(shí)現(xiàn)定時任務(wù),只能使用 alarms 來實(shí)現(xiàn)。

//v3-manifest.json
...
"permissions": [
...
"alarms"
]
...

操作步驟如下:

  • 在 manifest 設(shè)置 alarms 權(quán)限
  • 在 background 中,使用 alarms 創(chuàng)建定時任務(wù)
//v3 background.js
...
function peroidFunc(){
...
}
// 定時器
chrome.alarms.onAlarm.addListener((alarm) => {
//執(zhí)行一次
peroidFunc()
});

//1分鐘執(zhí)行一次定時任務(wù)
chrome.alarms.create({ periodInMinutes: 1.0 });
...

5. 網(wǎng)絡(luò)請求

網(wǎng)絡(luò)請求主流的 4 種方式包含:

  • Ajax
  • Jquery
  • fetch
  • Axios

這里以第三種方式 fetch 為例:

...
function login_do(tab,username,password){
const url = HOST + 'do_login'
const params = {
headers:{
"content-type":"application/json;charset=UTF-8"
},
body:JSON.stringify({
"username":username,
"password":password.replace(/(^\s*)|(\s*$)/g, "") //去掉前后空格
}),
method:"POST"
}
fetch(url,params)
.then(data=>{
return data.json()
})
.then(res=>{
if(res.err_code==0){
show(res.data.tips,"登錄成功")
}else{
warn(res.err_msg)
}
})
.catch(error=>{
console.log(error)
warn("重置失敗,請檢查數(shù)據(jù)!")
})
}
...

6. 自動化

Chrome 插件完全可以實(shí)現(xiàn)一些自動化場景,以此增加我們工作的效率。

文中模擬文本框輸入的 API 已經(jīng)廢棄,建議使用下面的方式完成文本框的輸入。

...
//輸入
function input(inputElement, content) {
// 注意:evt.initEvent已經(jīng)廢棄,使用下面的方式替代
// let evt = document.createEvent('HTMLEvents');
// evt.initEvent('input', true, true);

//新的方式
var evt = new Event("input", {"bubbles":true, "cancelable":false});
document.dispatchEvent(evt);
inputElement.value = content;
inputElement.dispatchEvent(evt)
}
...

7. 最后

還要補(bǔ)充一點(diǎn)的是,在 v3 版本中的 background 不能直接使用 window 對象,這里建議通過 Tab 標(biāo)簽或消息通信的方式來實(shí)現(xiàn)。

在開發(fā)一些簡單的工具類插件,原生 HTML + JS + Jquery 完全夠用;但是面對一些復(fù)雜頁面的需求,這里更推薦使用「 Vue + 預(yù)設(shè)」的方式來快速開發(fā),這部分內(nèi)容有需要的小伙伴可以自行擴(kuò)展:

https://vue-web-extension.netlify.app/intro/setup.html

責(zé)任編輯:武曉燕 來源: AirPython
相關(guān)推薦

2020-05-20 13:24:28

MySQL優(yōu)化數(shù)據(jù)庫

2022-08-02 08:01:09

開發(fā)插件Chrome前端技術(shù)

2021-09-04 07:56:44

Pythonos模塊

2025-03-11 14:45:31

2017-04-18 16:14:26

存儲對象存儲數(shù)據(jù)

2018-03-01 15:03:11

2011-02-18 13:31:22

Web 設(shè)計和開發(fā) C

2021-08-30 10:25:48

JavaScript進(jìn)階操作前端

2021-08-26 10:25:04

JavaScript進(jìn)階操作 前端

2023-06-01 07:48:03

Solidjsx??React?

2023-03-17 10:03:51

服務(wù)器編輯器vscode

2022-04-18 19:02:53

chrome擴(kuò)展瀏覽器

2009-09-14 09:52:43

GoogleChrome支持插件

2019-08-16 10:33:00

Chrome插件開發(fā)者

2019-08-20 15:01:05

Chrome 瀏覽器 插件

2021-04-29 15:11:50

Chrome 瀏覽器 谷歌

2018-07-06 04:59:37

5G網(wǎng)絡(luò)通信運(yùn)營商

2009-03-01 21:53:48

UbuntuChrome使用開發(fā)

2022-01-11 06:53:23

IPO開發(fā)容器

2014-12-17 14:41:21

云計算互聯(lián)網(wǎng)混合云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 三级视频在线观看电影 | 亚洲二区在线 | 麻豆久久精品 | 亚洲 精品 综合 精品 自拍 | 日韩国产欧美视频 | 久久亚洲一区二区三区四区 | 97天天干| 国产精品一区二 | 久久伊人一区二区 | 国产精品免费看 | 国产成人影院 | 国产成人精品一区二区在线 | 国产一区精品 | 少妇淫片aaaaa毛片叫床爽 | 91aiai | 在线电影日韩 | 天天干夜夜操 | 欧美大片一区 | 久久亚洲国产精品日日av夜夜 | 日本精a在线观看 | 观看av| 天堂一区二区三区 | 精品亚洲永久免费精品 | 视频一二三区 | 天天色官网| 黄视频欧美 | 黄色精品 | 成人精品久久日伦片大全免费 | 久久婷婷av | 国产精品欧美一区二区 | 久久久www成人免费精品张筱雨 | 黄免费观看视频 | 中文字幕国产一区 | 一级二级三级在线观看 | 国产91综合一区在线观看 | 欧美一区二区三区视频 | 精品少妇一区二区三区日产乱码 | 日本在线视频中文字幕 | 国产精品成人一区 | 在线视频成人 | 亚洲高清视频一区 |