您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自制邮件聚合模式,吊打会话模式,让脚本改变世界(已支持腾讯企业邮箱)
- // ==UserScript==
- // @name exmail.qq.com_view_plus
- // @description 自制邮件聚合模式,吊打会话模式,让脚本改变世界(已支持腾讯企业邮箱)
- // @version 1.92
- // @namespace https://wanyaxing.com/blog/20190120150811.html
- // @author wyx@wanyaxing.com
- // @include https://exmail.qq.com/cgi-bin/mail_list*
- // @run-at document-body
- // ==/UserScript==
- // 腾讯企业邮箱-聚合模式
- if (document.getElementById('frm')) {
- document.getElementById('frm').style.display='none';
- function selectText(element) {
- var selection = window.getSelection();
- selection.setBaseAndExtent(element, 0, element, 1);
- }
- function watchTdTime(_this, tdTime) {
- if (!tdTime)
- {
- var str = _this.innerText;
- if (str.indexOf('前')>0) {
- var num = parseInt((str.replace(/^(\d+?)[^\d]*$/,'$1'))) * 1000;
- if (str.indexOf('分钟前')>0) {
- num = num * 60;
- } else if (str.indexOf('小时前')>0) {
- num = num * 60 * 60;
- }
- var now = (new Date()).getTime();
- tdTime = now - num;
- }
- }
- if (tdTime) {
- var time_now = new Date();
- var t_over = time_now-tdTime ;
- var timelabel,nextTime;
- if (t_over>24*60*60000) {
- timelabel = (parseInt(t_over/60/60000/24))+'天'+parseInt((t_over-parseInt(t_over/60/60000/24)*60*24*60000)/60/60000)+'小时前';
- } else if (t_over>=60*60000) {
- timelabel = (parseInt(t_over/60/60000))+'小时前';
- } else if (t_over>60000) {
- timelabel = parseInt(t_over/60000)+'分钟前';
- nextTime = 60000;
- }else {
- timelabel = parseInt(t_over/1000)+'秒前';
- nextTime = 1000;
- }
- _this.innerHTML = '<div>'+timelabel+'</div>';
- if (nextTime) {
- // console.log(nextTime,_this.innerHTML);
- setTimeout(function(){
- watchTdTime(_this, tdTime)
- },nextTime);
- }
- }
- }
- function resetAsStoryLines() {
- var graytipNode = document.querySelector('.graytip');
- if (graytipNode && graytipNode.innerText.indexOf('会话模式')>=0) {
- graytipNode.style.cssText = 'display:none;'
- }
- // 时间表头迁移
- var timeTd = document.querySelector('#frm table').querySelector('tr').lastChild.previousSibling;
- timeTd.parentNode.insertBefore(timeTd,timeTd.previousSibling);
- var items = {};
- document.querySelectorAll('#frm .toarea>table').forEach(function(child){
- var formNode = child.querySelector('.tl nobr');
- var subjectNode = child.querySelector('.gt u');
- var descNode = child.querySelector('.txt_hidden>b');
- var tagDivNode = child.querySelector('.TagDiv');
- if (!(formNode && subjectNode && descNode && tagDivNode)){
- return
- }
- var formText = formNode.innerText;
- formText = formText.replace(/^[\s::\-]*(.*?)[\s::\-]*$/g,'$1');
- // 主题提炼(移除辅助词如转发回复啥的
- var subjectTitle = subjectNode.innerText;
- subjectTitle = subjectTitle.replace(/(Re|转发|Fw|回复|发信方已撤回邮件)[:: ]*/g,'');
- subjectTitle = subjectTitle.replace(/(\d+-\d+-\d+|\d+\/\d+\/\d+|\d+月\d+日)/g,'');
- subjectTitle = subjectTitle.replace(/^.{0,5}[::]/g,'');
- var subjectText = subjectTitle.replace(/^[【「\[\((]([^)\)\]」】]*?)[)\)\]」】]$/g,'$1');
- subjectText = subjectText.replace(/[【「\[\((](.*?)[)\)\]」】]/g,'');
- subjectText = subjectText.replace(/^[\s::\-,]*(.*?)[\s::\-]*$/g,'$1');
- if (subjectText == '') {
- subjectText = subjectTitle?subjectTitle:subjectNode.innerText;
- }
- // 简情处理(移除签名信息等)
- var descText = descNode.innerText;
- descText = descText.replace(/---+.*/g,'');
- descText = descText.replace(/原始邮件\s.*/g,'');
- descText = descText.replace(/(From|Sender|发件人)[::].*/g,'');
- descText = descText.replace(new RegExp('姓名:'+formText + '\\s.*','g'),'');
- descText = descText.replace(/在\s\d+年\d+月\d+日,.*?写道.*/g,'');
- descText = descText.replace(/\s[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+\s*$/g,'');
- descText = descText.replace(/^[\s::\-]*(.*?)[\s::\-]*$/g,'$1');
- descNode.innerHTML = descText;
- // 新窗口打开
- child.querySelector('.ci .cir').style.cssText = 'position: absolute;width: 90%;background: none;';
- // 时间栏 前移
- var dtNode = child.querySelector('.dt');
- dtNode.style.cssText = 'color:gray';
- dtNode.parentNode.insertBefore(dtNode,dtNode.previousSibling);
- watchTdTime(dtNode);//动态更新时间栏
- if (subjectNode.innerText.indexOf('发信方已撤回邮件:')>=0) {
- descNode.innerHTML = subjectNode.innerText;
- descNode.style.cssText = 'text-decoration: line-through;';
- }
- if (!items[subjectText]){
- subjectNode.innerHTML = subjectText;
- child.style.cssText = 'padding-top:36px';
- if (tagDivNode.firstChild) {
- tagDivNode.insertBefore(subjectNode,tagDivNode.firstChild);
- } else {
- tagDivNode.appendChild(subjectNode);
- }
- subjectNode.style.cssText = 'margin: 0 14px;';
- child.ondblclick = function(){
- selectText(subjectNode);
- return false;
- }
- tagDivNode.style.cssText = 'position: absolute;left: -250px;bottom: 28px;';
- tagDivNode.parentNode.style.cssText = 'position: relative;overflow: visible;pointer-events: none;';
- items[subjectText] = child;
- } else {
- subjectNode.style.cssText = 'display: none;';
- tagDivNode.style.cssText = 'display: none;';
- items[subjectText].parentNode.insertBefore(child,items[subjectText].nextSibling);
- items[subjectText] = child;
- }
- formNode.style.cssText = 'float: right;color:gray;';
- });
- // console.log(items);
- document.getElementById('frm').style.display='block';
- }
- document.addEventListener('DOMContentLoaded', resetAsStoryLines, false);
- }