您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
旧TweetDeckでTL上にALTテキストを展開するやつ
// ==UserScript== // @name alt_expand for Old TweetDeck // @namespace https://twitter.com/@7vU6jrZRuX2ffkY // @version 0.1 // @description 旧TweetDeckでTL上にALTテキストを展開するやつ // @author @7vU6jrZRuX2ffkY // @match https://twitter.com/i/tweetdeck // @grant none // @license MIT // ==/UserScript== (() => { const observer = new MutationObserver(m => { m.forEach(mm => { mm.addedNodes.forEach(e => { if (e.classList && e.classList.contains("js-stream-item")) { addAltText1(e.querySelector("div.js-media.media-preview:has(a.js-media-image-link[title]:not([title='']))")); addAltText2(e.querySelector("div.js-media.media-preview:has(a.js-media-image-link img[alt]:not([alt=''])")); } }); }); }); const addAltText1 = ele => { ele && ele.insertAdjacentHTML("afterend", "<p style='white-space:pre-wrap;padding-top:1em'>" + ele.querySelector("a[title]").title + "</p>") }; const addAltText2 = ele => { ele && ele.insertAdjacentHTML("afterend", "<p style='white-space:pre-wrap;padding-top:1em'>" + ele.querySelector("img[alt]").alt + "</p>") }; const waitForLoadCompletion = () => { const t1 = document.querySelector("div.js-app-columns"); const t2 = document.querySelector("div#open-modal"); if (t1 && t2) { observer.observe(t1, { childList: true, subtree: true, characterData: true }); observer.observe(t2, { childList: true, subtree: true, characterData: true }); } else { setTimeout(waitForLoadCompletion, 500); } }; waitForLoadCompletion(); })();