您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
when we read twitter thread, it's sucks. so I try to generate twitter thread reader in one single page, so i can easily read and share. Anyway, it's easy to read twitter's thread.
当前为
// ==UserScript== // @name Twitter thread reader // @namespace https://whywhathow.github.io/ // @homepage https://github.com/WhyWhatHow/powertoys4browser // @supportURL https://github.com/WhyWhatHow/powertoys4browser/issues // @version 1.4 // @description when we read twitter thread, it's sucks. so I try to generate twitter thread reader in one single page, so i can easily read and share. Anyway, it's easy to read twitter's thread. // @author whywhathow // @match https://twitter.com/ // @match https://twitter.com/*/status/* // @icon https://abs.twimg.com/favicons/twitter.2.ico // @run-at document-start // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_openInTab // @grant GM_registerMenuCommand // @license MIT // ==/UserScript== /*** * url checking ,if true, means twitter-thread, else ,means twitter.com * @param str * @returns {boolean} */ function checkURL(str) { const twitter = "https://twitter.com/home"; return twitter === str ? false : true; } function getThreadID(url) { const arr = url.split("/"); var threadId = arr[arr.length - 1]; console.log("ThreadId:-> {}", threadId); return threadId; } // 定义跳转函数 function redirect(url) { // 执行一些操作 console.log("准备跳转..."); console.log(url); // 跳转到指定 URL // window.location.href=url; GM_openInTab(url); } // actually doing something function running() { // 1. get url and twitter's thread id. let currentUrl = window.location.href; if (!checkURL(currentUrl)) { alert("not home page!!!") // not thread page, don't anything. return; } // 2. get tgread id var threadId = getThreadID(currentUrl); // 3. gengerate thread page. // https://twitter-thread.com/api/unroll-thread?id=1643514082681602048 // 发送 GET 请求 GM.xmlHttpRequest({ method: "GET", url: "https://twitter-thread.com/api/unroll-thread?id=" + threadId, headers: { "User-Agent": "Mozilla/5.0", // 设置请求头 }, onload: function (response) { // 页面跳转 var redirectUrl = "https://twitter-thread.com/t/" + threadId; redirect(redirectUrl); console.log(response.responseText); // 打印响应内容 }, onerror: function (error) { console.error(error); } }); } // 检查当前焦点是否在 Twitter 的输入框中 function isInTwitterInput() { const activeElement = document.activeElement; if (activeElement && activeElement.nodeName === "DIV" && activeElement.getAttribute("role") === "textbox") { // 当前焦点在 Twitter 的输入框中 return true; } else { // 当前焦点不在 Twitter 的输入框中 return false; } } (function () { 'use strict'; GM_registerMenuCommand('read thread in another page', running, 'f'); // 监听按键事件 document.addEventListener('keydown', function (event) { if (event.ctrlKey && event.key === 'f') { return; } // 如果按下了 f 键,并且事件源对象不是输入框元素 else if (event.key === 'f' && !isInTwitterInput()) { // 执行您的脚本逻辑 console.log('f------------------------------------f'); // alert("just wait") running() } }, true); })();