浏览器插件开发(一)入门之自制屏蔽某度广告的插件

news2024/9/29 11:35:58

一:浏览器扩展介绍:

浏览器扩展是一个小软件定义模块的网页浏览器,通常称为浏览器插件,大部分浏览器允许安装拓展,其作用有用户界面修改,广告拦截和Cookie管理等

        包含基本平台信息的应用程序清单JSON文件

        定义该函数的JS文件

        定义用户界面的HTML和CSS文件

Edge浏览器商店:Microsoft Edge 加载项

在扩展商店我们可以搜索并下载开发者们上传到商店的一些扩展,即插件,有通用性的,合适所有网站或大部分网站,也有专用性的,适合某一类或某一个网站,具体用法在下载扩展时看扩展的详情描述就可以

 二:手写一个广告屏蔽的插件

2.1 插件功能介绍

效果一:简化搜索页面

使用前

使用后,

 

效果二:简化搜索后的列表

使用前:

 

使用后:

 设计思路:

大致思路:使用浏览器调试工具,查看需要删去部分元素的class属性值或id属性值,然后用JS代码根据ID获取到HTML元素,然后删除即可,这一步是写在js文件时进行的,一般是每定位一个就写一段将其删除的代码

自制插件        

参照官方开发文档的教程,接下来直接开始。在本地创建一个文件夹,用来存放扩展(注意:在安装扩展后,该文件夹位置不能修改,和官方的标准项目结构不同)

我的图标是: 

有了上述思路后,先把除了js脚本以外的其他文件创建好并填上内容,具体如下:

1.manifest.json 全局配置文件 

 Edge插件开发文档中有说每个扩展包必须在根目录中有一个mainfest.json文件。清单提供了扩展,扩展包版本,扩展名称和说明等的详细信息

这里的Edge官方提供的mainfest接口,这里作为初学者,只需要设置插件的基本信息,这里manifest_version是当前edge官方支持的版本----

manifest3。其中的 content_scripts 是比较关键的配置,用来指定插件加载的JS文件、CSS文件还有起作用的网站,这里是以正则匹配的方式进行,这样就使得插件只在某一类网站里有效,不会影响其他网站。

{
    "name": "BaiduSimply",
    "description": "简化百度相关网站的插件",
    "version": "1.0",
    "manifest_version": 3,
    "action": {
        "default_popup": "popup.html",
        "default_icon": "BaiduSimply.png"
    },
    "content_scripts": [
        {
            "matches": ["https://www.baidu.com/*"],
            "js": ["main.js"],
            "css": ["style.css"]
        }
    ]
}

2. popup.html 插件显示的内容

<html lang="en">
    <head>
        <meta charset="UTF-8" />
    </head>
    <body>
        <div style="width:300px;">
            <h1>X度广告屏蔽插件已开启</h1>
            <h3>作者: 小超</h3>
        </div>
    </body>
</html>

该HTML页面是在安装插件后显示的,Edge浏览器安装插件后,运行中的插件会在网页的地址栏右边显示,图标是自定义的,点击后显示的HTML内容也是自定义的,这里只是做一个插件在运行中的提示

3. style.css 设置插件作用网站的样式

发现有内容只需要通过css就可以直接隐藏,那么这部分内容就可以不用JS来删除,因此用CSS样式速度更快

/*  关闭X度搜索的广告 */
#s_wrap, #s_top_wrap,#s-top-left, #u1, .cr-content{
    display: none;
}
/* X度搜索结果居中 */
.margin-inline-auto {
    margin-inline: auto;
}
#content_left{
    width: 100%;
}
/* 关闭相关搜索 */
#rs_new{
    display: none;
}
/* 关闭搜索后的广告 */
#content_right, #EC_result{
    display: none;
}

4. main.js 屏蔽广告的关键JS脚本

 其实屏蔽广告只需要设置CSS样式,这里的JS只是居中搜索结果,最终能达到上述的效果

function inlineResult(){
    const result = document.getElementsByClassName("c-container")
    // 使搜索结果居中
    document.getElementById("content_left").style = "width: 100%"
    for (let i = 0; i < result.length; i++) {
        result[i].classList.add("margin-inline-auto")
    }
}
window.onload = function () {
    inlineResult();
}
// 每隔一秒执行一次居中搜索结果
setInterval(function(){
    inlineResult();
}, 1000)

三:Edge浏览器安装插件

 使用 Edge浏览器,菜单-扩展-打开 Microsoft Edge加载项,找不到的话浏览器直接访问网址:edge://extensions/

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十章 总结【编译原理】

第十章 总结【编译原理】 前言推荐第十章 总结10.1 概述10.2 局部优化10.2.1基本块及流图10.2.2基本块的DAG表示及其应用 10.3 循环优化*10.4数据流分析 最后 前言 2023-6-26 18:54:31 以下内容源自《【编译原理】》 仅供学习交流使用 推荐 第九章 总结及作业&#xff08;4…

态路小课堂丨三种实现光模块更高传输速率的技术你知道吗?

TARLUZ态路 随着云计算、大数据的快速兴起&#xff0c;数据中心以及电信运营商对光模块的传输速率要求越来越高。从1998年发展至今&#xff0c;光模块一直朝着更高的速率、更小的封装不断升级。光模块一般采用增加波长数、增加信号传输通道数量和提高单通道速率技术方案实现光模…

公众号内添加投票链接制作投票的软件网络投票器

手机互联网给所有人都带来不同程度的便利&#xff0c;而微信已经成为国民的系统级别的应用。 现在很多人都会在微信群或朋友圈里转发投票&#xff0c;对于运营及推广来说找一个合适的投票小程序能够提高工作效率&#xff0c;提高活动的影响力。 那么微信做投票的小程序哪个比较…

.vm文件发邮件时js未生效,无法控制显示隐藏

需求起因 最近在做一个发邮件的功能&#xff0c;是后端发邮件&#xff0c;不过邮件内容是由前端来写。 邮件内容包括姓名、手机号、邮箱&#xff0c;这三个参数都是不一定有的&#xff0c;如果没有某个参数时&#xff0c;那一行内容就不显示。 写法没错&#xff0c;但就是js…

npm详解

1.npm支持多个源&#xff08;没列全&#xff0c;有兴趣的可以自己去了解一下其他源&#xff09; &#xff08;1&#xff09;官方源&#xff1a;https://registry.npmjs.org &#xff08;2&#xff09;淘宝源&#xff1a;https://registry.npm.taobao.org &#xff08;3&#x…

《Java核心卷1》慢慢啃!读第3,4章 | 第12版

提醒&#xff1a;全文约6000字&#xff0c;是一份比较单纯的学习笔记&#xff0c;知识点基本采用条目的形式列出&#xff0c;起到查漏补缺和备忘录的作用&#xff0c;而对内容之间的逻辑结构并未进行仔细梳理。本文内容包括&#xff1a; Java的基本程序设计结构面向对象程序设计…

jmeter压力测试实战分析详解,一定要看完哦

目录 1.从压力测试说起 2.压力测试到底要关注什么 3.你想要的到底是个什么东西 4.面试总问的jvm调优到底是要干什么 5.常用的压力测试工具及命令 6.性能诊断到底难在哪里&#xff1f; 7.到底是加机器还是优化服务&#xff1f; 总结&#xff1a; 1.从压力测试说起 压力测…

59 KVM Skylark虚拟机混部-概述、架构及特性

文章目录 59 KVM Skylark虚拟机混部-概述、架构及特性59.1 Skylark概述59.1.1 问题背景59.1.2 总体介绍 59.2 架构及特性59.2.1 总体实现框架59.2.2 功耗干扰控制59.2.3 LLC/MB干扰控制59.2.4 CPU干扰控制 59 KVM Skylark虚拟机混部-概述、架构及特性 59.1 Skylark概述 59.1.…

Android SPI

1.SPI SPI全称Service Provider Interface&#xff0c;服务提供方接口&#xff0c;是Java提供的一套用来被第三方实现或者扩展的API&#xff0c;它可以用来启用框架扩展和替换组件。服务通常指一个接口或者一个抽象类&#xff0c;服务提供方是对这个接口或者抽象类的具体实现&…

kafka常见问题

1.为什么要用mq&#xff08;mq的作用&#xff09;&#xff1f; 2.引入mq会多哪些问题&#xff1f; 3. 如何解决这些问题&#xff1f; 1.1实现异步发送 有些复杂的业务系统&#xff0c;一次用户请求可能会同步调用N个系统的接口&#xff0c;需要等待所有的接口都返回了&#…

虹科分享 | 高考大数据可视化志愿填报分析-基于虹科Domo BI工具

高考是中国教育系统中一项极为重要的考试&#xff0c;它不仅是学生完成高中学业的重要标志&#xff0c;也是进入大学的门槛。每年高考都会吸引数百万学生参加&#xff0c;同时也吸引了各地高校和招生部门的关注。高考招生数据是教育研究和政策制定的重要依据&#xff0c;通过对…

技术管理第二板斧建团队-知人善用

1、什么是知人善用 知人善用就是指技术 Leader 怎么用对人&#xff1f;用好人&#xff1f;核心在于怎么给事情安排对的人&#xff1f;怎么给人安排合适的事情&#xff1f;其中&#xff0c;“人”与“事”相辅相成&#xff0c;如果把事情安排给对的人&#xff0c;不光会取得好结…

干货丨如何实现WinApp的UI自动化测试?自动化工具如何选择人?

WinApp&#xff08;WindowsAPP&#xff09;是运行在Windows操作系统上的应用程序&#xff0c;通常会提供一个可视的界面&#xff0c;用于和用户交互。例如运行在Windows系统上的Microsoft Office、PyCharm、Visual Studio Code、Chrome&#xff0c;都属于WinApp。常见的WinApp&…

Arduino IDE 2.1.0 下安装ESP32(2.0.9)

很久没玩Arduino了。新装了一台电脑&#xff0c;想重新捡起ESP32-WROOM-32开发板玩玩。官网上下了Arduino IDE 2.1.0&#xff0c;然后配置ESP32开发环境。 下载及安装Arduino IDE略过不谈。装完后还是老规矩&#xff0c;文件 -> 首选项&#xff0c;先把自定义板管理地址填入…

好程序员:2023年自学Java四阶段学习法,真滴好用麻啦!

同学们&#xff0c;我是好程序员小源&#xff0c;今天给大家整理了自学Java的四个阶段&#xff0c;大家可以按照这四个阶段学习哦~会更加规划系统一点&#xff01; 第一阶段: JavaSE[5周] 本阶段从零基础起步&#xff0c;荃面深入的学系JavaSE课程&#xff0c;主要内容包括Java…

支付“清结算”体系的设计方法

支付完成以后进行履约&#xff0c;履约完成以后就需要清算各方利益并最终进行结算&#xff0c;清结算体系与支付体系并行是支付范畴另一个非常庞大的体系。 一、清算系统设计 我们都知道一笔支付最终都是要进行清算的&#xff0c;业务一般都会有众多参与者或者利益方&#xff…

ESP32网络应用 -- ESP32-S3使用MQTT协议与其他设备进行数据交互

在嵌入式物联网技术领域,MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议是一种非常常见且应用广泛的消息协议,它基于发布/订阅范式进行数据传输。关于MQTT协议的详细介绍,网络上不乏相关文章,此处不再进行详细论述。 ESP32-S3是一款应用广泛的物联网…

WPF实现登录页面设计

1、文件架构 2、CommandBase.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input;namespace CourseManagement.Common {public class CommandBase : ICommand{public ev…

EXCEL和VBA如何改变字母大小写 和 大小写互换?我写的自定义函数

目录 1 EXCEL里改变大小写的内置函数 2.1 转换大小写的函数 2.2 神奇的把数字和中文大小写转换的函数 2 VBA里改变大小写的内置函数 2.1 改变大小写 的内置函数 2.2 使用 excel的WorksheetFunction. text() 函数 3 如果想交换字母的大小写呢&#xff1f; 3.1 ASCII码里…

Java Servlet 技术

一、Servlet 简介 Servlet 是 JavaEE 的规范之一&#xff0c;通俗的来说就是 Java 接口&#xff0c;将来我们可以定义 Java 类来实现这个接口&#xff0c;并由 Web 服务器运行 Servlet &#xff0c;所以 TomCat 又被称作 Servlet 容器。 Servlet 提供了动态 Web 资源开发技术…