您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Brings back visual last edit text in drive apps due to M3 migration by Google.
当前为
// ==UserScript== // @name Restore Revision Time Visual Text in Google Apps // @version 1.2 // @description Brings back visual last edit text in drive apps due to M3 migration by Google. // @author ZachTheDev and happyviking // @match https://docs.google.com/document* // @match https://docs.google.com/presentation* // @match https://docs.google.com/spreadsheets* // @icon https://cdn-icons-png.flaticon.com/512/1674/1674929.png // @namespace gdocsrestoreupdatetimestamp // ==/UserScript== (function () { const escapeHTMLPolicy = window.trustedTypes ? trustedTypes?.createPolicy("default", { createHTML: (string) => string, }) : null; function addBackRevisionVisualText() { const revisionButtonElement = document.getElementById("docs-revisions-appbarbutton"); var textFromRevisionButtonElement = revisionButtonElement.getAttribute("ariel-label"); const menubarElement = document.getElementById("docs-menubar"); const revisionVisualTextHTML = "<div id=\"revisionVisualText\" class=\"menu-button goog-control goog-inline-block\" role=\"menuitem\" style=\"background-color: transparent;text-decoration: underline;\" data-tooltip=\"Open version history\"></div>"; const rangeForRevisionVisualTextHTML = document.createRange(); const fragmentForRevisionVisualTextHTML = rangeForRevisionVisualTextHTML.createContextualFragment(escapeHTMLPolicy?.createHTML(revisionVisualTextHTML) ?? revisionVisualTextHTML); menubarElement.appendChild(fragmentForRevisionVisualTextHTML); const revisionVisualTextElement = document.getElementById("revisionVisualText"); function callback() { console.log(revisionButtonElement.dataset.tooltip) textFromRevisionButtonElement = revisionButtonElement.getAttribute("data-tooltip"); revisionVisualTextElement.innerHTML = escapeHTMLPolicy?.createHTML(textFromRevisionButtonElement) ?? textFromRevisionButtonElement; } const observer = new MutationObserver(callback); observer.observe(revisionButtonElement, { attributeFilter: ["tooltip", "data-tooltip"], attributeOldValue: true, }); revisionVisualTextElement.addEventListener("mousedown", function (event) { revisionButtonElement.dispatchEvent(new MouseEvent("mousedown")); revisionButtonElement.classList.remove("jfk-button-hover"); revisionButtonElement.dispatchEvent(new MouseEvent("mouseup")); event.stopPropagation(); // fixes bug where menus would open on hover after first click of the revisionVisualTextElement }); revisionButtonElement.addEventListener("mouseenter", (event) => { revisionButtonElement.classList.add("jfk-button-hover"); }, false); } addBackRevisionVisualText(); })();