前言
mailto: 是很多网页上都会使用的电子邮件联系链接,只需要点一下就能打开邮件客户端。然而,对于大多数人来说,这个操作很不友好,希望关闭这个功能。要关闭它,其实不那么难。
步骤
给浏览器安装“油猴”浏览器扩展应用
“油猴”(Tampermonkey)其实是一个脚本管理器,它的魅力其实是脚本文件的魅力。现代的网页特效缤纷,外观出彩,其中 CSS 样式表和 JavaScript 脚本起到了不可或缺的作用,比如说我的博客上的各种文字、图片的显示效果就是通过 CSS 和 JavaScript 脚本来实现的。Tampermonkey 通过加载第三方的脚本文件,改变页面中的 CSS 和 JavaScript 元素,可以让整个网页大变样,也可以在网页中增加额外的功能。安装步骤如下(以 Chrome 浏览器为例):
点击 Chrome 浏览器菜单【更多工具】-【扩展程序】。
将“油猴”crx 安装文件拖放到这个页面,并确认安装。
需要“油猴”crx 安装文件朋友可以关注我订阅号【巧克力风暴】后在后台回复:油猴,就可以直接获取下载地址了。
注:Firefox 浏览器点击 https://addons.mozilla.org/zh-CN/firefox/addon/tampermonkey/?src=search 链接直接安装
编写屏蔽 mailto 的脚本
邮件点击“油猴”图标,点击【选项】:
点击【+】新建脚本:
编写屏蔽 mailto 的 JavaScript 脚本:
点击【文件】标签的【保存】:
点击【已安装脚本】,可以看到已安装脚本列表里面有了【Kill mailto】:
关闭油猴选项页面后,任意访问一个网站,可以发现“油猴”的图标已经显示一个红色的角标了,说明这个脚本已经生效。
点击网站上的邮件链接,你会发现没像往常一样有弹出邮件客户端,而是弹出了一个对话框【邮件地址已经复制到了你的剪切板中。】,这时你可以在任意输入框 Ctrl + V 一下,发现邮件地址被粘贴上了。
具体脚本如下:
// ==UserScript==
// @name Kill mailto
// @namespace
// @version 0.0.2
// @author caolist
// @description
// @icon
// @homepage
// @supportURL
// @match *://*/*
// @grant GM_setClipboard
// ==/UserScript==
window.onload=function(){
document.querySelectorAll('p').forEach((el, index, thisArray)=>{
el.innerText.match(/[A-Za-z0-9+/]*={0,2}(?=[^>]*(<[^\/script|^\/style]|$))/g).forEach((strMaybeBase64)=>{
if(strMaybeBase64.length>0){
try{
const strText = window.atob(strMaybeBase64)
if(strText.match(/^([A-Za-z0-9_\-.])+\@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,6})$/) !== null){
const reg = new RegExp(strMaybeBase64+'(?=[^>]*(<(?!\/(script|style))|$))', 'gi')
const newCode = '<a href="mailto:'+strText+'">'+strText+'</a>'
el.innerHTML = el.innerHTML.replace(reg, newCode)
}
}
catch(e){}
}
})
if(index === thisArray.length-1){
document.querySelectorAll('a[href^=mailto]').forEach((thelink)=>{
const themail = thelink.href.replace(/^mailto:(.*?@[^?]*).*$/i, '$1')
thelink.onclick = function(e){ e.preventDefault(e) }
thelink.addEventListener('click', (e)=>{
e.preventDefault(e)
GM_setClipboard(themail)
alert('邮件地址已经复制到了你的剪切板中。')
e.preventDefault()
})
})
}
})
}
总结
这篇文字的核心其实是“油猴”,他不仅仅只是做到能屏蔽 mailto,更强大的功能值得你去探索。如果有 JavaScript 基础的话,可以试着编写自己需要的功能。