您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Auto-Expand Chats Topics
// ==UserScript== // @name Teams Auto-Expand Chat // @namespace http://tampermonkey.net/ // @version 0.6 // @description Auto-Expand Chats Topics // @author FHaze // @match https://teams.microsoft.com/_ // @icon https://www.google.com/s2/favicons?sz=64&domain=microsoft.com // @grant none // ==/UserScript== (function() { 'use strict'; const isUrlChat = url => url.startsWith("https://teams.microsoft.com/_#/conversations") && url.contains("ctx=channel") && !url.contains("replyChainId") const doMagic = () => { const links = Array.from(document.querySelectorAll("[data-tid=messageBodyCollapsedString]")) .filter(l => !l.children[2].innerHTML.contains("Collapse all")) console.log(`[Teams Auto-Expand Chat] Expanding ${links.length} tabs`) links.forEach(l => l.click()) setTimeout(() => { document.querySelectorAll("virtual-repeat")[0].scrollTop = 1_000_000_000 }, 200) } const addEventsListeners = () => { const channelList = document.querySelectorAll("li.animate-channel-item") console.log(`[Teams Auto-Expand Chat] Adding click listener for ${channelList.length} channels`) channelList.forEach(ch => { ch.removeEventListener("click", doMagic) ch.addEventListener("click", doMagic) }) } const addHeaderEventsListeners = () => { const channelList = document.querySelectorAll("h3.channel-list-team-header") console.log(`[Teams Auto-Expand Chat] Adding click listener for ${channelList.length} header channels`) channelList.forEach(ch => { ch.removeEventListener("click", addEventsListeners) ch.addEventListener("click", addEventsListeners) }) } const chatReady = callback => { let tries = 0 let maxTries = 20 console.log(`[Teams Auto-Expand Chat] Trying to auto-expand topics (maxTries=${maxTries})`) const verifyChat = setInterval(() => { if (document.querySelectorAll(".ts-message").length === 0) { console.log(`[Teams Auto-Expand Chat] Chat not ready (try=${tries})`) tries++ if (tries === maxTries) { clearInterval(verifyChat) } return } // Chat is ready console.log("[Teams Auto-Expand Chat] Chat is ready") callback() clearInterval(verifyChat) }, 500) } const TeamsAutoExpand = ({chatMonted}) => { window.onhashchange = e => { if (isUrlChat(e.newURL) && !isUrlChat(e.oldURL)) { chatReady(() => { chatMonted() addEventsListeners() addHeaderEventsListeners() }) } } chatReady(() => { chatMonted() addEventsListeners() addHeaderEventsListeners() }) } TeamsAutoExpand({ chatMonted: () => doMagic() }) })();