您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Inject javascript into almost every website you visit.
当前为
// ==UserScript== // @name InjectJS // @namespace http://github.com/YTXaos/InjectJS // @version 1.20 // @description Inject javascript into almost every website you visit. // @author YTXaos // @match *://*/* // @icon https://raw.githubusercontent.com/YTXaos/InjectJS/main/assets/logo.png // @grant GM_addElement // @license MIT // @require https://code.jquery.com/jquery-3.6.0.min.js // ==/UserScript== (function() { "use strict"; const url = location.href, origin = location.origin; function Option(item) { if(localStorage.getItem(`inject-js:${item}`)) { return localStorage.getItem(`inject-js:${item}`).toString(); } else { return false; } } function onURL(page, mode) { switch(mode) { case "exact": return url === `${origin}${page}`; case "relative": return url.includes(page); default: console.error("InjectJS: Specify a matching mode."); } } if(onURL("/inject-js/", "exact")) { location = "https://github.com/YTXaos/InjectJS"; } Option("startup_log") == "true" && (console.info("InjectJS Loaded. Press Ctrl + Q to topen")); const popup = document.createElement("div"), style = document.createElement("style"); fetch("https://raw.githubusercontent.com/YTXaos/InjectJS/main/assets/main.css").then(get => get.text()).then(set => style.innerHTML = set); popup.setAttribute("class", "js-injector-popup"); popup.style.display = "none"; popup.innerHTML = `<label class="js-inject-header"> <div class="js-logo-needle">.....</div> Inject<span class="js-logo">JS</span> </label> <textarea placeholder="Your code here" class="js-code-inject" spellcheck="false" data-gramm="false" data-gramm_editor="false" data-enable-grammarly="false"></textarea> <div class="js-btns-section"> <button class="execute-code" disabled>Execute</button> <button class="js-options-btn">Options</button> </div>`; document.head.prepend(style); document.body.prepend(popup); function OptionsPage() { $("link[rel=stylesheet], style").remove(); document.title = "InjectJS Options"; fetch("https://raw.githubusercontent.com/YTXaos/InjectJS/main/pages/options.html").then(get => get.text()).then(set => document.body.innerHTML = set); fetch("https://raw.githubusercontent.com/YTXaos/InjectJS/main/options.js").then(get => get.text()).then(set => GM_addElement(document.head, "script", { textContent: set })); } const code = document.querySelector(".js-code-inject"), btn = document.querySelector(".execute-code"), option_btn = document.querySelector(".js-options-btn"); code.addEventListener("input", CheckCode); btn.addEventListener("click", InjectCode); option_btn.addEventListener("click", () => { location = "/inject-js/options"; }); function CheckCode() { const code = document.querySelector(".js-code-inject"); if(code.value.length < 5) { btn.setAttribute("disabled", "disabled"); } else { btn.removeAttribute("disabled"); } } function InjectCode() { const code = document.querySelector(".js-code-inject").value; try { eval(code); } catch (e) { if(Option("alert_errors") == "true") { alert(e.message); } else { console.error(e.message); } } } function ShowInjector() { dragElement(document.querySelector(".js-injector-popup")); function dragElement(elmnt) { var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; if(document.querySelector(".js-inject-header")) { document.querySelector(".js-inject-header").onmousedown = dragMouseDown; } else { elmnt.onmousedown = dragMouseDown; } function dragMouseDown(e) { e = e || window.event; e.preventDefault(); pos3 = e.clientX; pos4 = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; } function elementDrag(e) { e = e || window.event; e.preventDefault(); pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; } } popup.classList.toggle("show"); } if(onURL("/inject-js/options", "exact")) { OptionsPage(); } document.addEventListener("keyup", function(e) { e.preventDefault(); if(e.ctrlKey && e.which === 81) { ShowInjector(); } }); })();