当前位置:网站首页>Chrome plug-in features and case analysis of actual combat scenarios
Chrome plug-in features and case analysis of actual combat scenarios
2022-06-23 23:45:00 【2020labs assistant】
One 、 Preface
mention Chrome Extension plug-in (Chrome Extension), Everyone has more or less several plug-ins installed in their browser , Like one click translation 、 Advertising screening 、 Video recording and so on , By using these plug-ins , Can effectively improve our work efficiency ; But sometimes , There is no ready-made plug-in on the market for a function we want , As a developer, I naturally think of , Whether you can develop a customized plug-in by yourself ? There are a lot of good online about Chrome Plug in development tutorial , It can help us quickly start developing a plug-in , Let's change our thinking , Start with applications , Explain the characteristics of plug-ins to inspire readers what scenarios can be solved through plug-ins .
The focus of this article is not Chrome Basic development of plug-ins , But focus on principles and Applications , I'll start with some important features of plug-ins , Combined with the actual plug-in case , To analyze the role of these characteristics , This can inspire readers to use these features to develop their own efficiency tools , Create your own sharp weapon .
Two 、 What is? Chrome Extension plug-in
What is? Chrome Extension plug-in ? In our impression , It's like running an application in a browser , You can think of a browser as a mobile phone , So plug-ins are like applications , We from Chrome Download from the app store , And then install it to Chrome Browser , You can run it in the browser .
Let's look at the official explanation :
Chrome Extension It's a small software program , It can be used to define the browser's browsing experience , So that users can customize according to their personal needs or preferences Chrome Browser functions and behavior , The main technology stack used is HTML、Javascript and CSS.
One sentence summary :Chrome The extension uses the front-end technology stack , To customize the functions of the browser , Improve user experience .
Maybe you've heard another word :Chrome Plugin. Which translates to Chrome plug-in unit , and Chrome Extensions are very similar , It's particularly confusing , So what's the difference between them ?
- Chrome Extension Just to enhance the functionality of the web browser , It uses the existing functions and various functions provided by the browser API, Function combination , To improve the browser experience , Stay at the browser level ;
- Chrome Plugin It can not only enhance the function of web pages , At the same time, it can expand the functions of the browser itself ; When the functions provided by the browser can no longer meet your needs , You need to pass C/C++ Such a compilation language to expand the functions of the browser , For example, we often use Flash plug-in unit ,Chrome Plugin Working at the kernel level .
3、 ... and 、Chrome Composition and core mechanism of extension plug-ins
3.1 Chrome The composition of the extension
One Chrome Extensions are usually made up of 3 Class files consist of :
1) The configuration file manifest.json, The name used to configure the extension 、 Version number 、 author 、 Icon icon、 Pop up screen 、 jurisdiction 、 Script path and other information ;
2) picture 、css Etc ;
3)js Script files , It includes :
- popup.js: For collocation popup.html Use , Click the plug-in icon to display the page and page logic control ;
- background.js: Used to define a background page , Equivalent to a resident page , The lifecycle is consistent with the browser ;
- content_scripts.js: Used to inject... Into the page JS Script , It can manipulate pages dom, But it doesn't conflict with the script in the page .
3.2 Chrome The core mechanism of the extension
Chrome Several core concepts in the extension :Extension Page、background.js、Content_script.js , When do they trigger , What's the role , How to communicate with each other ? Take a look at the diagram below :
As you can see from the diagram , There are three processes : Extension process (Extension Process)、 Page rendering process (Render Process)、 Browser process (Browser Process).
1) Run in the extension process Extension Page,Extension Page It mainly includes backgrount.html and popup.html:
- backgrount.html There's nothing in it , It's through background.js Create build , When the browser opens , The plug-in will be loaded automatically background.js file , It is independent of web pages and always runs in the background , It mainly calls the... Provided by the browser API Interact with the browser ;
- popup.html Is different , It has content , It's a real page , And our ordinary web The page is the same , from html、css、Javascript form , It is loaded on demand , The user needs to click the button in the address bar to trigger , To pop up the page .
2) The rendering process mainly runs Web Page, When opening a page , Will content_script.js Load and inject into the environment of the web page , It is similar to the Javascript equally , You can operate the DOM Tree, Change the display effect of the page ;
3) The browser process plays a more bridge role here , As a transit, you can Extension Page and Content_script.js Message communication between .
Four 、Chrome What extensions can do
Chrome The use direction of the extension mainly includes two parts :
Change the appearance of the browser :
- brower Actions
- page Actions
- content menus
- Desktop notification
- Omnibox
- override Substitute page
Interact with the browser :
- Cookie control
- The label control
- Bookmark control
- Download control
- Event monitoring
- Network request
- agent ...
Let's analyze the use cases of these functions through examples :
example 1: Replace page
Use alternate pages , Can be Chrome Some specific default pages are replaced , Instead, use the page provided by the extension . This allows developers to develop more interesting or practical basic function pages .
"chrome_url_overrides": {
"newtab": "newTab.html", // Replace new tab
"bookmarks":"bookmarks.html", // Replace bookmark manager page
"history":"history.html" // Replace History page
},The following is a rendering of replacing the new tab :
example 2:Cookie control
adopt Cookie Of API, You can make changes to the browser Cookie Add, delete, modify and check . For example, in our development work , It is often necessary to clear the browser cache frequently , Each time you need to find the clear button , Pop-up dialog box , Confirm , The operation is very complicated , If you develop a chrome Extension plug-in , You can easily clear the browser with one click Cookie Equal cache , You can refer to Clear Store plug-in unit .
example 3: The label control
Use chrome.tabs API Interact with the browser's tag system , You can query , establish 、 Modify and rearrange the tabs in the browser ; When we use the browser , Often open a lot of tabs , It looks chaotic , When you want to find an open page halfway , Inefficient and painful , If only these tabs could be organized and displayed orderly , Here's a recommendation for you Chrome Extension plug-in :OneTab, The plug-in arranges all open tabs in order in the new page , Here's the picture , Be clear at a glance .
We can even go through tabs Realize the interaction between tabs , For safety reasons ,tab There are no attributes in document, Therefore, it is not possible to directly obtain... In a label page in the extension dom Elements , But you can do this by sending event requests :
chrome.tabs.sendRequest(tab_id, {
hello: "ok"
}, function(response){
// response Handle
});chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if (request.hello == "ok"){
sendResponse({
data: $("#hello") // obtain id yes hello Send the element of
});
}
}
);example 4: Intercept requests or reverse proxies
During page performance spot check , We often check whether the page image resources are too large , for example 200K, Get a picture list page that is too large .
chrome.webRequest API Only in background.js Use in , So it can be intercepted by pictures , Pass the link to the of the current page through a message content_script.js, And then in content_script.js Image download and size check in .
// background.js
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
// url Is the link to download pictures
const { url ,tabId} = details
// towards content_script.js Send a link to download pictures
chrome.tabs.sendMessage(tabId, {picUrl: url}, function(response) {
//...
});
return {cancel: isCancel};
},
{urls: ["http://baidu.com"],types: "image"},
["blocking"]
);// content_script.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse)
{
if(sender.tab && request.picUrl && request.picUrl == sender.tab.id){
// Get the picture size and download
}
});example 5: Page element operation
utilize Content_script.js operational dom Elements , Operate on page elements , Realize automatic login , Liberating hands .
// Input
function input(inputElement, content) {
let event = document.createEvent('HTMLEvents');
event.initEvent('input', true, true);
inputElement.value = content;
inputElement.dispatchEvent(event)
}
const usernameDom = document.getElementById("userName"); // user name
const pwdDom = document.getElementById("password"); // password
const btnDom = document.getElementById("submitBtn");// Button
// After input , Click on the confirmation
input(usernameDom, " full name ");
input(pwdDom, " password ");
// Sign in
btnDom.click();5、 ... and 、 Business practice
Pain points : I am mainly responsible for vivo The business of global mall , Global businesses will face the problem of international language , We have independently developed a multilingual management background , To configure key-value, The front end obtains multi language information through the interface and displays it on the page ; If the operation view page , I don't think a copy is suitable , Want to modify , You need to perform a series of operations as shown in the figure below :
You can see that when the operator wants to modify the copy , He first needs to know what the copy corresponds to key value , And you can't get... On the page key value , Need to let developers provide , Then you need to update the corresponding language on the multilingual management platform key Value .
There are two problems :
- What you see is what you get , You can't know when you see the page key value ;
- What you see cannot be directly modified , You need to go to another management platform to modify ;
At present, with few modifications , It can still be operated , When there are a lot of changes , This operation is cumbersome , Efficiency is very low .
reflection :
1) Whether the operation can be modified directly on the page and take effect ?2) If you can modify , How to implement cross domain requests ?3) How to realize login Authorization ?
If the Chrome Extensions are familiar with , Will find Chrome It's tailor-made for this , Can solve these problems perfectly .
Implementation scheme :
1) For the copy involved in the page dom Make changes , Binding multiple languages key value .
<div data-lang-key="address.delete.button">{{ language.addressDeleteButton }}</div>2) utilize Content_script,js Can operate the page dom Elements , When starting the plug-in , Copy all modifiable documents on the page dom increase contenteditable attribute , Support editable , Pictured ;
3) Create a modification panel , Get the currently selected key Values and value value , And the modified value , Pictured above , Top right panel .
4) utilize Chrome The plug-in supports the feature of cross site requests , Send modification requests directly to multilingual platforms .
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
try{
sendResponse(JSON.parse(xhr.response));
}catch(e) {
// exception handling
}
}
};
xhr.send(new URLSearchParams(params));
return true
}
);5) utilize Chrome The plug-in can get the information in the browser Cookie characteristic , Open a new tab to open the multilingual background , Log in , After successful login, the requested authorization modification can be realized .
6、 ... and 、 summary
So to conclude , I often sigh in my life : I've seen a lot of truth in life , Still have a bad life . Again , Used a lot Chrome plug-in unit , I still can't code my own plug-in , So finally, I'll give you a reading Chrome Plug in source code plug-in , It can be called the plug-in in the plug-in , The king in the plug-in ——Chrome extension source viewer. Through it, you can easily view the source code of other plug-ins , Let's stand on the shoulders of giants and move forward ~~
author :vivo Internet front end team -Zhang hao
边栏推荐
- 嵌入式接口复习资料
- 生成式对抗网络(GANs)及变体
- PLC数据操作系列之构造不同应用场景的缓存栈FIFO(算法详解)
- 一个人竟然撸了一个网易云音乐云村
- Cs5213 HDMI to VGA with audio signal output scheme
- 6月25日PMP考试敏捷怎么考?替你分忧解难
- Short video enters the hinterland of online music
- Is Everbright futures safe? What do I need to open an account?
- High imitation Book flag novel flutter edition, learn it
- Go language core 36 lectures (go language practice and application 23) -- learning notes
猜你喜欢
随机推荐
老龄化下背景下,综合能效管理平台为医院保驾护航
"Shanda Diwei Cup" the 12th Shandong ICPC undergraduate program design competition
3D打印和激光切割流程的初步了解
List<? extends T>和List<?super T>区别
ACM. Hj89 24 point operation ●●●
Analysis of Alibaba cloud Tianchi competition -- prediction of o2o coupon
Solve the problem that slf4j logs are not printed
The digital transformation index report 2021 released by Tencent Research Institute has accelerated the digital transformation and upgrading of mainland enterprises!
Differences between broadcastreceiver and localbroadcastmanager
Short video enters the hinterland of online music
2022年信息安全工程师考试知识点:访问控制
【Try to Hack】masscan
Install using snap in opencloudos NET 6
在OpenCloudOS使用snap安装.NET 6
7、STM32——LCD
为实现“双碳”目标,应如何实现节能、合理的照明管控
Idea automatically generates unit tests, doubling efficiency!
再来一个高仿开眼的短视频APP
企业网站的制作流程是什么?设计和制作一个网站需要多长时间?
Several cases of index invalidation caused by MySQL









