您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在知乎首页帖子标题下方展示发帖时间
// ==UserScript== // @name ZhihuPostCreatedAt // @namespace http://tampermonkey.net/ // @version 0.1.0 // @description 在知乎首页帖子标题下方展示发帖时间 // @author You // @match https://www.zhihu.com/ // @icon https://www.google.com/s2/favicons?sz=64&domain=zhihu.com // @grant none // @license MIT // ==/UserScript== function debounce(wait, func) { let timeoutId = null; return function debounced(...args) { if (timeoutId) { clearTimeout(timeoutId); } timeoutId = setTimeout(() => { func(...args); timeoutId = null; }, wait); }; } function formatDate(date) { if (!(date instanceof Date)) { throw new Error("Invalid input: Please provide a Date object."); } const pad = (num) => (num < 10 ? '0' + num : num); const year = date.getFullYear(); const month = pad(date.getMonth() + 1); const day = pad(date.getDate()); const hours = pad(date.getHours()); const minutes = pad(date.getMinutes()); const seconds = pad(date.getSeconds()); return `${year}-${month}-${day} ${hours}:${minutes}`; } (function() { 'use strict'; function main() { let offset = 0; /** * 获取页面卡片列表,并插入时间显示 */ const insertCreatedAndUpdateTimeForCards = debounce(800, () => { const cards = Array.from(document.getElementsByClassName("TopstoryItem")); for (let i = offset; i < cards.length; i += 1) { insertCreatedAndUpdatedTime(cards[i]); } offset = cards.length; }); const cache = {}; function insertCreatedAndUpdatedTime(card) { let $created = card.querySelector('meta[itemprop="dateCreated"]'); if (!$created) { $created = card.querySelector('meta[itemprop="datePublished"]'); } const $url = card.querySelector('meta[itemprop="url"]'); if (!$url || !$created) { return; } const url = $url.getAttribute('content'); const created = $created.getAttribute("content"); if (cache[url]) { return; } const $title = card.querySelector(".ContentItem-title"); const title = $title.innerText; if (!$title) { return; } const $created2 = document.createElement("div"); $created2.style.cssText = "margin: 8px 0; font-size: 14px; color: var(--GBL05A)"; $created2.textContent = "发布于 " + formatDate(new Date(created)); $title.parentNode.insertBefore($created2, $title.nextSibling); cache[url] = true; } const observer = new MutationObserver((mutationsList) => { for (let mutation of mutationsList) { if (mutation.type === 'childList') { // insertCreatedAndUpdateTimeForCards(); } } }); observer.observe(document.getElementById("TopstoryContent"), { childList: true, subtree: true, }); } main(); })();