知乎便捷功能

知乎便捷功能 1.首页自动跳转到发现 2.自动关闭登录框 3.自动显示全部回答 4.问题日期显示在上方 5.去除外链的提示 6.去除广告

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

ستحتاج إلى تثبيت إضافة مثل Stylus لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتتمكن من تثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

(لدي بالفعل مثبت أنماط للمستخدم، دعني أقم بتثبيته!)

// ==UserScript==
// @name         知乎便捷功能
// @namespace    http://tampermonkey.net/
// @version      1.9
// @description  知乎便捷功能 1.首页自动跳转到发现 2.自动关闭登录框 3.自动显示全部回答 4.问题日期显示在上方 5.去除外链的提示 6.去除广告
// @author       backrock12
// @match        *://*.zhihu.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function () {
  "use strict";

  let autoclose_count = 0;
  const max_count = 30;
  let isrun = false;

  function autoclose() {
    if (isrun) return;
    isrun = true;
    console.log("autoclose");

    const ad1 = document.querySelector(".css-1hwwfws");
    if (ad1) {
      ad1.style.display = "none";
    }
    const ad2 = document.querySelector(".css-1ynzxqw");
    if (ad2) {
        console.groupEnd('1ynzxqw');
        ad2.style.display = "none";
    }

    const s3 = document.querySelector(".ViewAll-QuestionMainAction");
    if (s3) {
      s3.click();
      return;
    }

    const s4 = document.querySelector(".QuestionRichText-more");
    if (s4) {
      s4.click();
    }

    const s0 = document.querySelector(".SignContainer-content");
    if (s0) {
      const s1 = document.querySelector(".Modal-backdrop");
      if (s1) {
        s1.click();
      }

      const s2 = document.querySelector(".Modal-closeButton");
      if (s2) {
        s2.click();
      }
    }

    const s5 = document.querySelector("body > div:nth-child(14)");
    if (s5) {
      if (s5.querySelector(".signFlowModal")) {
        s5.innerHTML = "";
        console.log(s5);
      }
    }

    autoclose_count++;

    // if (autoclose_count > max_count) {
    //     document.querySelector('body').removeEventListener('DOMNodeInserted', autoclose);
    // }

    isrun = false;
  }

  function noad() {
    const ad1 = document.querySelector(".AppBanner");
    if (ad1) {
      ad1.style.display = "none";
    }

    const ad2 = document.querySelector("div.Card:nth-child(4)");
    if (ad2) {
      ad2.style.display = "none";
    }

    const ad3 = document.querySelector(".Card.Banner");
    if (ad3) {
      ad3.style.display = "none";
    }
    const ad4 = document.querySelector(".AdblockBanner");
    if (ad4) {
      ad4.style.display = "none";
    }
  }

  function nosign() {
    document
      .querySelector("body")
      .addEventListener("DOMNodeInserted", autoclose);
  }

  ///  跳转
  function nojump() {
    var documents = document.querySelectorAll("div a");
    for (var i = 0; i < documents.length; i++) {
      if (documents[i].href.split("http").length > 2) {
        documents[i].setAttribute(
          "href",
          decodeURIComponent("http" + documents[i].href.split("http")[2])
        );
      }
    }
  }

  function nohome() {
    // let reg = new RegExp('www.zhihu.com/sign*');
    // if (reg.test(location.href)) {
    location.href = "https://www.zhihu.com/explore";
    // }
  }

  function zhuanlan() {
    // let reg = new RegExp('zhuanlan.zhihu.com*');
    // if (reg.test(location.href)) {
    console.log("zhuanlan");
    const container = document.querySelector(".Post-Author");
    const time = document.querySelector(".ContentItem-time");
    var timediv = document.createElement("div");
    timediv.innerHTML = time.outerHTML;
    console.log(timediv);

    container.appendChild(timediv);
    //}
  }

  // 对Date的扩展,将 Date 转化为指定格式的String
  // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
  // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
  // 例子:
  // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
  // (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
  function timeFormat(time, fmt) {
    //author: meizz
    var o = {
      "M+": time.getMonth() + 1, //月份
      "d+": time.getDate(), //日
      "h+": time.getHours(), //小时
      "m+": time.getMinutes(), //分
      "s+": time.getSeconds(), //秒
      "q+": Math.floor((time.getMonth() + 3) / 3), //季度
      S: time.getMilliseconds(), //毫秒
    };
    if (/(y+)/.test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        (time.getFullYear() + "").substr(4 - RegExp.$1.length)
      );
    for (var k in o)
      if (new RegExp("(" + k + ")").test(fmt))
        fmt = fmt.replace(
          RegExp.$1,
          RegExp.$1.length == 1
            ? o[k]
            : ("00" + o[k]).substr(("" + o[k]).length)
        );
    return fmt;
  }

  function questiodate() {
    function QuestionPage() {
      const title = document.querySelector(".QuestionPage");
      if (title) {
        const dateCreated = title.querySelector(
          "[itemprop~=dateCreated][content]"
        ).content;
        const dateModified = title.querySelector(
          "[itemprop~=dateModified][content]"
        ).content;

        const ctime = timeFormat(new Date(dateCreated), "yyyy-MM-dd hh:mm:ss");
        const mtime = timeFormat(new Date(dateModified), "yyyy-MM-dd hh:mm:ss");
        const side = title.querySelector(".QuestionHeader-side");
        var timediv = document.createElement("div");
        timediv.innerHTML = `<p>创建时间: &nbsp;${ctime}</p><p>编辑时间: &nbsp;${mtime}</p>`;
        timediv.style.cssText = "color:#999";
        side.appendChild(timediv);
      }
    }

    let listnum = 0;
    function ContentItem() {
      //console.log('ContentItem');
      const list = document.querySelectorAll(".ContentItem");
      if (listnum != list.length) {
        listnum = list.length;
        for (var i = 0; i < list.length; i++) {
          const item = list[i];
          if (item.getAttribute("zh_date_mk") != "true") {
            const dateCreated = item.querySelector(
              "[itemprop~=dateCreated][content]"
            ).content;
            const dateModified = item.querySelector(
              "[itemprop~=dateModified][content]"
            ).content;

            const ctime = timeFormat(
              new Date(dateCreated),
              "yyyy-MM-dd hh:mm:ss"
            );
            const mtime = timeFormat(
              new Date(dateModified),
              "yyyy-MM-dd hh:mm:ss"
            );

            const sideitem = item.querySelector(".css-h5al4j");
            var timediv = document.createElement("span");
            timediv.innerHTML = `创建时间: ${ctime}&nbsp;&nbsp;编辑时间: ${mtime} `;
            timediv.class = "Voters";
            timediv.style.cssText = "color:#999;float:right;";
            sideitem.appendChild(timediv);
            item.setAttribute("zh_date_mk", "true");
          }
        }
      }
    }

    QuestionPage();
    document
      .querySelector(".Question-main")
      .addEventListener("DOMNodeInserted", ContentItem);
  }

  function start() {
    if (/www\.zhihu\.com\/sign*/.test(location.href)) {
      //首页跳转
      nohome();
    } else if (/zhuanlan\.zhihu\.com*/.test(location.href)) {
      //专栏日期
      zhuanlan();
      nosign();
    } else if (/www\.zhihu\.com\/questio*/.test(location.href)) {
      //登录框
      //广告
      setTimeout(noad, 500);
      //问题日期
      questiodate();
      nosign();
    } else {
      //登录框
      nosign();
    }

    //链接
    setTimeout(nojump, 500);
    console.log("zhihu");
  }

  start();
})();