diff --git a/Zhihu-Enhanced.user.js b/Zhihu-Enhanced.user.js
index 82d60b7..5f4805e 100644
--- a/Zhihu-Enhanced.user.js
+++ b/Zhihu-Enhanced.user.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 知乎增强
-// @version 1.8.8
+// @version 1.8.9
// @author X.I.U
// @description 移除登录弹窗、屏蔽首页视频、默认收起回答、快捷收起当前回答/评论(左键两侧空白处)、快捷回到顶部(右键两侧空白处)、屏蔽用户 (发布的内容)、屏蔽关键词(标题/评论)、移除高亮链接、屏蔽盐选内容、净化标题消息、展开问题描述、置顶显示时间、完整问题时间、区分问题文章、直达问题按钮、默认高清原图、默认站外直链
// @match *://www.zhihu.com/*
@@ -384,6 +384,7 @@ function isElementInViewport_(el) {
function customBlockUsers() {
let nowBlockUsers = '';
menu_value('menu_customBlockUsers').forEach(function(item){nowBlockUsers += '|' + item})
+ //console.log(nowBlockUsers.replace('|',''))
let newBlockUsers = prompt('编辑 [自定义屏蔽用户]\n(不同用户名之间使用 "|" 分隔,例如:用户A|用户B|用户C )', nowBlockUsers.replace('|',''));
if (newBlockUsers === '') {
GM_setValue('menu_customBlockUsers', []);
@@ -1218,17 +1219,17 @@ function addLocationchange() {
}
-// [完整显示时间 + 置顶显示时间] 功能修改自:https://greasyfork.org/scripts/402808(从 JQuery 改为原生 JavaScript,且优化了代码)
+// [完整显示时间 + 置顶显示时间] 功能修改自:https://greasyfork.org/scripts/402808(从 JQuery 改为原生 JavaScript,且精简、优化了代码)
// 完整显示时间 + 置顶显示时间 - 首页
function topTime_index() {
let topTime = document.querySelectorAll('.TopstoryItem');if (!topTime) return
topTime.forEach(function(_this) {
- let ContentItemTime = _this.querySelector('.ContentItem-time');if (!ContentItemTime) return
- if (!(ContentItemTime.classList.contains('full')) && ContentItemTime.querySelector('span') && ContentItemTime.querySelector('span').innerText != null) {
+ let t = _this.querySelector('.ContentItem-time');if (!t) return
+ if (!(t.classList.contains('full')) && t.querySelector('span') && t.querySelector('span').innerText != null) {
// 完整显示时间
- topTime_allTime(ContentItemTime)
+ topTime_allTime(t)
// 发布时间置顶
- topTime_publishTop(ContentItemTime, _this, 'ContentItem-meta')
+ topTime_publishTop(t, _this, 'ContentItem-meta')
}
});
}
@@ -1238,24 +1239,19 @@ function topTime_index() {
function topTime_question() {
let topTime = document.querySelectorAll('.ContentItem.AnswerItem');if (!topTime) return
topTime.forEach(function(_this) {
- let ContentItemTime = _this.querySelector('.ContentItem-time');if (!ContentItemTime) return
- if (!(ContentItemTime.classList.contains('full')) && ContentItemTime.querySelector('span') && ContentItemTime.querySelector('span').innerText != null) {
+ let t = _this.querySelector('.ContentItem-time');if (!t) return
+ if (!(t.classList.contains('full')) && t.querySelector('span') && t.querySelector('span').innerText != null) {
// 完整显示时间
- topTime_allTime(ContentItemTime)
+ topTime_allTime(t)
// 发布时间置顶
- topTime_publishTop(ContentItemTime, _this, 'ContentItem-meta')
+ topTime_publishTop(t, _this, 'ContentItem-meta')
}
});
// 问题创建时间
- if (!(document.querySelector('.QuestionPage .QuestionHeader-side p')) && location.href.indexOf("log") == -1) { // 没有执行过 且 非问题日志页
- let createtime = document.querySelector('.QuestionPage>[itemprop~=dateCreated]').getAttribute('content');
- let modifiedtime = document.querySelector('.QuestionPage>[itemprop~=dateModified]').getAttribute('content');
- createtime = getUTC8(new Date(createtime));
- modifiedtime = getUTC8(new Date(modifiedtime));
- // 添加到问题页右上角
- document.querySelector('.QuestionPage .QuestionHeader-side').insertAdjacentHTML('beforeEnd', '
创建时间: ' + createtime + '
最后编辑: ' + modifiedtime + '
');
+ if (!(document.querySelector('.QuestionPage .QuestionHeader-side .QuestionTime-xiu')) && location.href.indexOf('/log') == -1) {
+ document.querySelector('.QuestionPage .QuestionHeader-side').insertAdjacentHTML('beforeEnd', '创建时间:' + getUTC8(new Date(document.querySelector('.QuestionPage > meta[itemprop=dateCreated]').content)) + '
最后编辑:' + getUTC8(new Date(document.querySelector('.QuestionPage > meta[itemprop=dateModified]').content)) + '
');
}
}
@@ -1264,12 +1260,12 @@ function topTime_question() {
function topTime_search() {
let topTime = document.querySelectorAll('.ContentItem.AnswerItem, .ContentItem.ArticleItem');if (!topTime) return
topTime.forEach(function(_this) {
- let ContentItemTime = _this.querySelector('.ContentItem-time');if (!ContentItemTime) return
- if (!(ContentItemTime.classList.contains('full')) && ContentItemTime.querySelector('span') && ContentItemTime.querySelector('span').innerText != null) {
+ let t = _this.querySelector('.ContentItem-time');if (!t) return
+ if (!(t.classList.contains('full')) && t.querySelector('span') && t.querySelector('span').innerText != null) {
// 完整显示时间
- topTime_allTime(ContentItemTime)
+ topTime_allTime(t)
// 发布时间置顶
- topTime_publishTop(ContentItemTime, _this, 'SearchItem-meta')
+ topTime_publishTop(t, _this, 'SearchItem-meta')
}
});
@@ -1280,12 +1276,12 @@ function topTime_search() {
function topTime_people() {
let topTime = document.querySelectorAll('.ContentItem.AnswerItem, .ContentItem.ArticleItem');if (!topTime) return
topTime.forEach(function(_this) {
- let ContentItemTime = _this.querySelector('.ContentItem-time');if (!ContentItemTime) return
- if (!(ContentItemTime.classList.contains('full')) && ContentItemTime.querySelector('span') && ContentItemTime.querySelector('span').innerText != null) {
+ let t = _this.querySelector('.ContentItem-time');if (!t) return
+ if (!(t.classList.contains('full')) && t.querySelector('span') && t.querySelector('span').innerText != null) {
// 完整显示时间
- topTime_allTime(ContentItemTime)
+ topTime_allTime(t)
// 发布时间置顶
- topTime_publishTop(ContentItemTime, _this, 'ContentItem-meta')
+ topTime_publishTop(t, _this, 'ContentItem-meta')
}
});
@@ -1294,22 +1290,22 @@ function topTime_people() {
// 完整显示时间 + 置顶显示时间 - 专栏/文章
function topTime_zhuanlan() {
- let ContentItemTime = document.querySelector('.ContentItem-time');if (!ContentItemTime) return
+ let t = document.querySelector('.ContentItem-time');if (!t) return
// 完整显示时间
if (menu_value('menu_allTime')) {
- if (ContentItemTime.innerText.indexOf('编辑于') > -1 && !(ContentItemTime.classList.contains('doneeeeee'))) {
- let bianjiyu = ContentItemTime.innerText;
- ContentItemTime.click();
- ContentItemTime.innerText = (ContentItemTime.innerText + "," + bianjiyu)
- ContentItemTime.classList.add("doneeeeee");
+ if (t.innerText.indexOf('编辑于') > -1 && !(t.classList.contains('xiu-time'))) {
+ let bianjiyu = t.innerText;
+ t.click();
+ t.innerText = (t.innerText + "," + bianjiyu)
+ t.classList.add('xiu-time');
}
}
//发布时间置顶
if (menu_value('menu_publishTop') && !(document.querySelector('.Post-Header > .ContentItem-time')) && !(document.querySelector('.ContentItem-meta > .ContentItem-time'))) {
- ContentItemTime.style.cssText = 'padding:0px 0px 0px 0px; margin-top: 14px'
- let temp_time = ContentItemTime.cloneNode(true);
- // ContentItemTime.style.display = 'none';
+ t.style.cssText = 'padding:0px 0px 0px 0px; margin-top: 14px'
+ let temp_time = t.cloneNode(true);
+ // t.style.display = 'none';
if (location.href.indexOf('/column/') > -1){
document.querySelector('.ContentItem-meta').insertAdjacentElement('beforeEnd', temp_time);
} else {
@@ -1320,137 +1316,60 @@ function topTime_zhuanlan() {
// 完整显示时间
-function topTime_allTime(ContentItemTime) {
+function topTime_allTime(t) {
if (!menu_value('menu_allTime')) return
- if (ContentItemTime.innerText.indexOf("发布于") == -1 && ContentItemTime.innerText.indexOf("编辑于") > -1) { //只有 "编辑于" 时增加具体发布时间 data-tooltip
- let data_tooltip = ContentItemTime.querySelector('span').getAttribute('data-tooltip');
- let oldtext = ContentItemTime.querySelector('span').innerText;
- ContentItemTime.querySelector('span').innerText = data_tooltip + "," + oldtext;
- ContentItemTime.classList.add('full');
- } else if (ContentItemTime.innerText.indexOf("发布于") > -1 && ContentItemTime.innerText.indexOf("编辑于") == -1) { //只有 "发布于" 时替换为具体发布时间 data-tooltip
- let data_tooltip = ContentItemTime.querySelector('span').getAttribute('data-tooltip');
- ContentItemTime.querySelector('span').innerText = data_tooltip;
- ContentItemTime.classList.add('full');
+ if (t.textContent.indexOf('发布于') > -1 && t.textContent.indexOf('编辑于') == -1) {
+ t.querySelector('span').textContent = (t.querySelector('span').dataset.tooltip);
+ t.classList.add('full');
+ } else if (t.textContent.indexOf('发布于') == -1 && t.textContent.indexOf('编辑于') > -1) {
+ t.querySelector('span').textContent = (t.querySelector('span').dataset.tooltip) + ' ,' + (t.querySelector('span').textContent);
+ t.classList.add('full');
}
}
// 发布时间置顶
-function topTime_publishTop(ContentItemTime, _this, class_) {
+function topTime_publishTop(t, _this, _class) {
if (!menu_value('menu_publishTop')) return
- if (!ContentItemTime.parentNode.classList.contains(class_)) {
- let temp_time = ContentItemTime.cloneNode(true);
- //_this.querySelector('.RichContent .ContentItem-time').style.display = 'none';
- _this.querySelector('.' + class_).insertAdjacentElement('beforeEnd', temp_time);
+ if (!t.parentNode.classList.contains(_class)) {
+ let temp_time = t.cloneNode(true);
+ _this.querySelector('.' + _class).insertAdjacentElement('beforeEnd', temp_time);
}
}
-// UTC 标准时转 UTC+8 北京时间,来自:https://greasyfork.org/zh-CN/scripts/402808
-function getUTC8(datetime) {
- let month = (datetime.getMonth() + 1) < 10 ? "0" + (datetime.getMonth() + 1) : (datetime.getMonth() + 1);
- let date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
- let hours = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
- let minutes = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
- let seconds = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
- return (datetime.getFullYear() + "-" + month + "-" + date + "\xa0\xa0" + hours + ":" + minutes + ":" + seconds);
+// UTC 标准时转 UTC+8 北京时间,修改自:https://greasyfork.org/zh-CN/scripts/402808(精简)
+function getUTC8(t) {
+ return (t.getFullYear() + '-' + (((t.getMonth() + 1) < 10) ? ('0' + (t.getMonth() + 1)) : (t.getMonth() + 1)) + '-' + ((t.getDate() < 10) ? ('0' + t.getDate()) : t.getDate()) + '\xa0\xa0' + ((t.getHours() < 10) ? ('0' + t.getHours()) : t.getHours()) + ':' + ((t.getMinutes() < 10) ? ('0' + t.getMinutes()) : t.getMinutes()) + ':' + ((t.getSeconds() < 10) ? ('0' + t.getSeconds()) : t.getSeconds()));
}
-// 默认站外直链,修改自:https://greasyfork.org/scripts/402808(从 JQuery 改为原生 JavaScript)
+// 默认站外直链,修改自:https://greasyfork.org/scripts/402808(从 JQuery 改为原生 JavaScript,且精简、优化了代码)
function directLink () {
- let link, equal, colon, externalHref, protocol, path, newHref;
- // 文字链接
- link = document.querySelectorAll('a[class*="external"]')
- if (link) {
- link.forEach(function (_this) {
- if (_this.getElementsByTagName('span').length > 0) {
- newHref = _this.innerText;
- _this.setAttribute('href', newHref);
- } else if (_this.href.indexOf("link.zhihu.com/?target=") > -1) {
- externalHref = _this.href;
- newHref = externalHref.substring(externalHref = _this.href.indexOf('link.zhihu.com/?target=') + 'link.zhihu.com/?target='.length);
- _this.setAttribute('href', decodeURIComponent(newHref));
- } else {
- externalHref = _this.href;
- if (externalHref.lastIndexOf("https%3A")) {
- newHref = _this.href.substring(_this.href.lastIndexOf("https%3A"));
- } else if (externalHref.lastIndexOf("http%3A%2F%2F")) {
- newHref = _this.href.substring(_this.href.lastIndexOf("http%3A"));
- }
- _this.setAttribute('href', decodeURIComponent(newHref));
- }
- });
- }
-
- // 卡片链接
- link = document.querySelectorAll('a[class*="LinkCard"]:not([class*="MCNLinkCard"]):not([class*="ZVideoLinkCard"])')
- if (link) {
- link.forEach(function (_this) {
- if (_this.getElementsByTagName('LinkCard-title').length > 0 && _this.getElementsByTagName('LinkCard-title')[0].indexOf("http") > -1) {
- newHref = _this.getElementsByTagName('LinkCard-title').innerText;
- _this.setAttribute('href', newHref);
- } else if (_this.href.indexOf("link.zhihu.com/?target=") > -1) {
- externalHref = _this.href;
- newHref = externalHref.substring(externalHref = _this.href.indexOf("link.zhihu.com/?target=") + "link.zhihu.com/?target=".length);
- _this.setAttribute('href', decodeURIComponent(newHref));
- } else {
- externalHref = _this.href;
- if (externalHref.lastIndexOf("https%3A")) {
- newHref = _this.href.substring(_this.href.lastIndexOf("https%3A"));
- } else if (externalHref.lastIndexOf("http%3A%2F%2F")) {
- newHref = _this.href.substring(_this.href.lastIndexOf("http%3A"));
- }
- _this.setAttribute('href', decodeURIComponent(newHref));
- }
- });
- }
-
- // 旧版视频卡片链接
- link = document.querySelectorAll('a.VideoCard-link')
- if (link) {
- link.forEach(function (_this) {
- if (_this.href.indexOf('link.zhihu.com/?target=') > -1) {
- externalHref = _this.href;
- equal = externalHref.lastIndexOf('http');
- colon = externalHref.lastIndexOf('%3A');
- protocol = externalHref.substring(equal, colon);
- path = externalHref.substring(colon + 5, externalHref.length);
- newHref = protocol + '://' + path;
- _this.setAttribute('href', decodeURIComponent(newHref));
- }
- });
- }
+ document.querySelectorAll('a.external[href*="link.zhihu.com/?target="], a.LinkCard[href*="link.zhihu.com/?target="]:not(.MCNLinkCard):not(.ZVideoLinkCard):not(.ADLinkCardContainer)').forEach(function (_this) {_this.href = decodeURIComponent(_this.href.substring(_this.href.indexOf('link.zhihu.com/?target=') + 23));});
}
-// 默认高清原图,修改自:https://greasyfork.org/scripts/402808(从 JQuery 改为原生 JavaScript)
+// 默认高清原图,修改自:https://greasyfork.org/scripts/402808(从 JQuery 改为原生 JavaScript,且精简、优化了代码)
function originalPic(){
- let pic = document.getElementsByTagName('img');if (!pic) return
- Array.from(pic).forEach(function(pic1){
- if (pic1.getAttribute('data-original') != undefined && pic1.className != 'comment_sticker') {
- if (pic1.getAttribute('src') != pic1.getAttribute('data-original')) {
- pic1.setAttribute('src', pic1.getAttribute('data-original'))
- }
- }
- });
+ document.querySelectorAll('img').forEach(function(one){if (one.dataset.original != undefined && one.src != one.dataset.original && one.className != 'comment_sticker') {one.src = one.dataset.original}});
}
-// 默认折叠邀请,修改自:https://greasyfork.org/scripts/402808(从 JQuery 改为原生 JavaScript)
+// 默认折叠邀请,修改自:https://greasyfork.org/scripts/402808(从 JQuery 改为原生 JavaScript,且精简、优化了代码)
function questionInvitation(){
- let timer = setInterval(function(){
- let QuestionInvitation = document.querySelector('.QuestionInvitation-content');if (!QuestionInvitation) return
- clearInterval(timer);
- QuestionInvitation.style.display = 'none';
- document.querySelector('.QuestionInvitation-title').innerHTML = document.querySelector('.QuestionInvitation-title').innerText + ' 展开/折叠'
+ let time = setInterval(function(){
+ let q = document.querySelector('.QuestionInvitation-content'); if (!q) return
+ clearInterval(time);
+ q.style.display = 'none';
+ document.querySelector('.QuestionInvitation-title').innerHTML = document.querySelector('.QuestionInvitation-title').innerText + ' 展开/折叠'
// 点击事件(展开/折叠)
document.querySelector('.Topbar').onclick = function(){
- let QuestionInvitation = document.querySelector('.QuestionInvitation-content')
- if (QuestionInvitation.style.display == 'none') {
- QuestionInvitation.style.display = ''
+ let q = document.querySelector('.QuestionInvitation-content')
+ if (q.style.display == 'none') {
+ q.style.display = ''
} else {
- QuestionInvitation.style.display = 'none'
+ q.style.display = 'none'
}
}
});