Random website Tab Title随机浏览器选项卡标题和图标(摸鱼)

Set a random title on any website tabs.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

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

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Random website Tab Title随机浏览器选项卡标题和图标(摸鱼)
// @namespace    http://tampermonkey.net/
// @version      1.0.1
// @description  Set a random title on any website tabs.
// @match        *://*/*
// @run-at       document-end
// @require      https://cdnjs.cloudflare.com/ajax/libs/faker/4.1.0/faker.min.js
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
/*
        let canvas = document.createElement("canvas");
    let ctx = canvas.getContext('2d');
    ctx.fillStyle = '#fff';
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    let linkTags = document.head.getElementsByTagName('link');
    for (let i=0; i<linkTags.length; i++) {
        let el = linkTags[i];
        if ((el.getAttribute('rel') === 'shortcut icon') || (el.getAttribute('rel') === 'icon')) {
            el.href = canvas.toDataURL();
        }
    }
    */


    var iconUrl = "https://github.com/fluidicon.png";

    function detectFavicon() {
        var link = document.querySelector("link[rel*='icon']");
        return link && link.getAttribute("href") === iconUrl;
    }

    function setFavicon(iconUrl) {
        var link = document.querySelector("link[rel*='icon']");
        if (link) {
            var oldIcon = link.href;
            if (iconUrl !== oldIcon) {
                var newLink = document.createElement("link");
                newLink.setAttribute("rel", "shortcut icon");
                newLink.setAttribute("href", iconUrl);
                document.head.removeChild(link);
                document.head.appendChild(newLink);
            }
        }
    }

    function checkFavicon() {
        if (!detectFavicon()) {
            setFavicon(iconUrl);
        }
    }

    setInterval(checkFavicon, 500);
    // Clear tab title
   document.title = 'Programming Note';
      let newTitle = createRandomTitle();

    // Change page title
    document.title = newTitle;

    // Create a new title every five seconds
    setInterval(() => {
        newTitle = createRandomTitle();
        document.title = newTitle;
    }, 9999);

    function createRandomTitle() {
        // Use faker library to generate a random title
          // Create arrays of possible titles for each topic
  const cSharpTitles = [
    "Github Search",
    "C# 中的异步编程:最佳实践和常见问题。",
    "使用C# 开发跨平台应用程序的技巧。",
    "掌握快速排序算法:C# 实现指南。",
    "为什么 LINQ 是 C# 中必须掌握的技能?"
  ];

  const sqlServerTitles = [
    "SQL Server 中的索引设计:技巧与最佳实践。",
    "数据分析师入门:从零开始学习 SQL Server。",
    "SQL Server 存储过程的优化和性能调优技巧。",
    "SQL Server 中的身份验证和权限管理:实用指南。",
     "SQL Server粗存储过程开启远程调试",
    "SQL Server 中不同日期格式的转换方法。"
  ];

  const androidTitles = [
    "Kotlin vs. Java:哪个更适合 Android 开发?",
    "Android 中热门的 UI 框架和库。",
    "Android 中的后台任务处理:异步操作的最佳实践。",
    "使用混合应用框架构建跨平台 Android 应用程序。",
    "如何调试和排除 Android 应用程序中的崩溃问题?"
  ];

  // Combine all arrays into a single array
  const allTitles = [...cSharpTitles, ...sqlServerTitles, ...androidTitles];

  // Get a random title from the combined array
  const newTitle = allTitles[Math.floor(Math.random() * allTitles.length)];
        return newTitle;
       // return `${faker.company.catchPhrase()} | ${faker.lorem.sentence(4)}`;
    }

    // Remove favicon links
    /*let favicons = document.getElementsByTagName('link');

    for (let i = favicons.length - 1; i >= 0; i--) {
        if (favicons[i].getAttribute('rel') === 'icon') {
            favicons[i].parentNode.removeChild(favicons[i]);
        }
    }*/
       // Clear all favicons and icons using the Canvas API

})();