在您安装前,Greasy Fork镜像 希望您知道此脚本声明其包含了一些负面功能。这些功能也许会使脚本作者获利,而不能给您带来任何直接的金钱收益。
此脚本含有追踪您的操作的代码。
như tên
- // ==UserScript==
- // @name Hiện Join date
- // @namespace idmresettrial
- // @version 2021.05.18.03
- // @description như tên
- // @author You
- // @match https://voz.vn/t/*
- // @grant GM_setValue
- // @grant GM_getValue
- // @run-at document-start
- // @antifeature tracking
- // ==/UserScript==
- document.addEventListener('DOMContentLoaded', function () {
- 'use strict';
- const warningDate = new Date(new Date() - 3 * 30 * 86400 * 1000);
- let cachedIds = GM_getValue("cachedIds", {});
- let dataVersion = 1;
- if (GM_getValue("dataVersion", 0) < dataVersion) {
- cachedIds = {};
- GM_setValue("dataVersion", dataVersion);
- }
- function gnsJd(id) {
- if (Object.keys(cachedIds).includes(id)) {
- showJd(id);
- return;
- }
- let token = document.getElementsByName("_xfToken")[0].value;
- let queryUrl = "https://voz.vn/u/{username}.{id}/?tooltip=true&_xfRequestUri={requestUri}&_xfWithData=1&_xfToken={token}&_xfResponseType=json";
- let username = document.querySelector(".message-userDetails a.username[data-user-id='" + id + "']").innerText;
- queryUrl = queryUrl
- .replace("{username}", encodeURIComponent(username))
- .replace("{id}", id)
- .replace("{requestUri}", document.location.pathname)
- .replace("{token}", token);
- let httpRequest = new XMLHttpRequest();
- httpRequest.onreadystatechange = function() {
- if (httpRequest.readyState === XMLHttpRequest.DONE && httpRequest.status === 200) {
- let joindate = JSON.parse(httpRequest.responseText).html.content.match(/data-time=\"(.*?)\"/);
- if (joindate && !isNaN(Number(joindate[1]))) {
- cachedIds[id] = Number(joindate[1]);
- showJd(id);
- }
- }
- }
- httpRequest.open("GET", queryUrl);
- httpRequest.send();
- }
- let done = [];
- function showJd(id) {
- if (done.includes(id)) {
- return;
- }
- let els = document.querySelectorAll(".message-userDetails a.username[data-user-id='" + id + "']");
- els.forEach(el => {
- let jd = new Date(cachedIds[id]*1000)
- jd = jd.toLocaleDateString("vi-VN") + (jd < warningDate ? "" : " *");
- let jdEl = ('<h5 class="message-userTitle joindate" dir="auto" itemprop="joindate">Joined: {jd}</h5>{br}')
- .replace("{jd}", jd);
- let parent = el.parentElement.parentElement;
- let userBanners = parent.querySelectorAll(".userBanner");
- jdEl = jdEl.replace("{br}", (userBanners.length >= 2)? "<br/>" : "");
- parent.querySelector("[itemProp=jobTitle]").insertAdjacentHTML('afterend', jdEl);
- });
- done.push(id);
- }
- window.addEventListener("beforeunload", function() {
- GM_setValue("cachedIds", cachedIds);
- });
- function inoHandler(entries, observer) {
- entries.forEach(entry => {
- let id = entry.target.getAttribute("data-user-id");
- if (Object.keys(cachedIds).includes(id)) {
- observer.unobserve(entry.target);
- }
- gnsJd(id);
- });
- }
- let observer = new IntersectionObserver(inoHandler);
- let els = document.querySelectorAll(".message-userDetails a.username");
- els.forEach(el => observer.observe(el));
- let style = document.createElement('style');
- style.innerHTML = '@media (max-width: 751px) { .message-userTitle.joindate:before {content: ". "} }' +
- '@media (min-width: 752px) { .message-userTitle.joindate + br {display: none;} }';
- document.head.appendChild(style);
- });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址