会CSS就会去广告~php
咱们浏览网页的时候常常难免会看到各类不想看到的广告内容,最简单的方案就是经过浏览器插件来解决,好比大名鼎鼎的AdBlock插件以及国内的各类广告拦截助手。css
但这些插件的拦截能力可定制化程度不高,像AdBlock须要经过其定义的一套语法规则经过CSS选择器来屏蔽一些DOM元素,碰到一些特殊的状况就无能为力了。html
好比一个页面上的某些重要元素被绑定了事件,点击的时候会跳转到广告页面,这时候就不能经过简单的屏蔽DOM元素的方式来实现了。前端
对于这些状况咱们可使用一个强大的浏览器插件——Greasemonkey,简称GM,中文俗称为“油猴”,支持Firefox和Chrome浏览器。git
油猴并非一个专门用来去广告的插件,而是一个往页面中植入JavaScript代码的工具,用来修改页面,或者添加一些功能,好比自动填充表单、显示网盘文件下载连接等。github
开发功能很是简单,只须要经过js调用对应API函数便可。web
简单几行代码,就能够去除大部分页面广告。浏览器
油猴的使用很是简单,咱们编写一个js脚本,而后配置好对应的网址。bash
这样当浏览器访问匹配的网址时,油猴会加载咱们编写的js脚本,运行里面的代码。前端工程师
简而言之分两步。
须要注意的是,配置参数是在以==UserScript==
开头,==/UserScript==
结尾的注释中的。
完整的示例以下:
// ==UserScript==
// @name XX广告过滤
// @version 0.1
// @icon https://www.xxx.com/favicon.ico
// @description try to take over the world!
// @author You
// @include http*://xx.com/*
// @grant GM_addStyle
// @run-at document-start
// ==/UserScript==
复制代码
具体说明能够参考官方文档:www.tampermonkey.net/documentati…
这是最简单的屏蔽广告的方式,只要配置规则就好了,能屏蔽80%以上的广告。
以某论坛广告为例,这个论坛的广告是直接夹杂在帖子当中,下方有个小小的字标明广告,一不当心就点进去了。 并且帖子中间夹杂着绝不相干的广告,至关影响体验。
这种广告屏蔽起来至关简单,写一条样式规则,将其display
属性置为none
就好了。
.home-place-item {
display: none!important;
}
复制代码
以防被覆盖,咱们能够加上!important
提高权限。
大部分广告能够经过上面 css选择器 + display属性 的方式屏蔽。但有些广告处理起来会比较麻烦。
例如搜索引擎的广告,就使用了一些方式来“保护”。 某搜索引擎搜索“机票”能够看到下面的广告信息。
能够看到该广告元素style属性中使用了最高权重的display、visibility两个属性,因此用上面隐藏的方式确定是无效的。
因此只能选择其余的方式,这里须要考验你们的css基本功了。 让一个元素隐藏的方式有哪些? 下面是一种实现方式:
[cmatchid] {
height: 0;
overflow: hidden;
}
复制代码
还有一类广告并非以静态元素的方式呈现,甚至你在页面上都看不到它,它只在你第一次点击某个功能的时候弹出来。 这种处理起来就相对麻烦,由于直接对元素进行修改可能会影响到正常功能使用。 可是这种广告的事件绑定通常都是单独写在某个js文件中的,细心查找,而后阻止对应的js文件加载就能够从根本上解决问题。 浏览器其实为插件提供了API用来阻止资源加载,可是油猴却没有主动提供。 后来在issue中找到了一个隐藏API来实现这个功能。 以阻止 https://xx.com
下的文件为例,能够在脚本开头引用webRequest
功能:
// @webRequest [{"selector":"https://xx.com/*","action":"cancel"}]
复制代码
只要你懂web前端,只要你肯动手,你的网页均可以变成你想象的样子。
装上插件,去自定义你的页面吧!
示例脚本地址:github.com/yalishizhud…
个人新书《了不得的JavaScript工程师:从前端到全端高级进阶》已经上架,得到了阮一峰老师等众多技术专家推荐,但愿能帮助更多前端工程师一块儿成长提高,拥有全面能力和全局视野,成为了避免起的JavaScript工程师!