Teams自动深色模式

根据系统设置自动切换深色模式,深色用的是官方的样式

目前為 2023-09-11 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Teams自动深色模式
// @version      0.1.0
// @description  根据系统设置自动切换深色模式,深色用的是官方的样式
// @namespace    https://teams.microsoft.com/
// @match        https://teams.microsoft.com/_*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=teams.microsoft.com
// @author       bowencool
// @license      MIT
// @supportURL   https://github.com/bowencool/Tampermonkey-Scripts/issues
// @grant        none
// ==/UserScript==

(function () {
  "use strict";

  function waitForElementToExist(selector) {
    return new Promise((resolve) => {
      if (document.querySelector(selector)) {
        return resolve(document.querySelector(selector));
      }

      const observer = new MutationObserver(() => {
        if (document.querySelector(selector)) {
          resolve(document.querySelector(selector));
          observer.disconnect();
        }
      });

      observer.observe(document.body, {
        subtree: true,
        childList: true,
      });
    });
  }

  async function toggle(
    isDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches
  ) {
    /* 有两个事件会触发,而且有循环,必须加判断 */
    const link = document.querySelector('#themed-stylesheet[rel="stylesheet"]');
    const url = link.href;
    const currentThemeIsDark = url.includes("dark");
    console.log({ isDarkMode, currentThemeIsDark });
    if (isDarkMode) {
      if (currentThemeIsDark) return;
      (await waitForElementToExist("#settings-menu-button")).click();
      (
        await waitForElementToExist(
          '[data-tid="settingsDropdownOptionsButton"]'
        )
      ).click();
      (
        await waitForElementToExist(
          '[data-tid="optionsSettingsDialog-General"]'
        )
      ).click();
      (await waitForElementToExist('[data-tid="dark-theme"]')).click();
      (await waitForElementToExist('[data-tid="closeModelDialogBtn"]')).click();
    } else {
      if (!currentThemeIsDark) return;
      (await waitForElementToExist("#settings-menu-button")).click();
      (
        await waitForElementToExist(
          '[data-tid="settingsDropdownOptionsButton"]'
        )
      ).click();
      (
        await waitForElementToExist(
          '[data-tid="optionsSettingsDialog-General"]'
        )
      ).click();
      (await waitForElementToExist('[data-tid="default-theme"]')).click();
      (await waitForElementToExist('[data-tid="closeModelDialogBtn"]')).click();
    }
  }
  toggle();
  window
    .matchMedia("(prefers-color-scheme: dark)")
    .addEventListener("change", (e) => {
      toggle(e.matches);
    });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址