您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
当URL中匹配到某个标志后将开发环境内嵌到页面内
// ==UserScript== // @name 将开发环境内嵌到线上页面中 // @namespace http://yournamespace.example.com // @version 1.0 // @description 当URL中匹配到某个标志后将开发环境内嵌到页面内 // @author liliangrong777 // @include * // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant GM_getResourceText // @license MIT // ==/UserScript== (function () { 'use strict'; // 检测标识 const MATCH_FLAG = 'env=dev' // 本地环境地址 const LOCAL_URL = 'http://localhost:5173'; // react挂载节点 const ROOT_ID = 'root'; // 要替换元素的选择器或返回dom节点的函数,如果未匹配上会挂载到document.body上 const SELECTOR = `#${ROOT_ID}` // 获取当前页面的URL const currentURL = window.location.href; // 检查URL是否包含'env=dev' if (currentURL.includes(MATCH_FLAG)) { const newDiv = document.createElement('div'); newDiv.id = ROOT_ID; const isStrSelector = typeof SELECTOR === 'string' const section = isStrSelector ? document.querySelector(SELECTOR) : SELECTOR() if (section) { section.insertAdjacentElement('afterend', newDiv); section.remove(); } else { document.body.appendChild(newDiv); } // 创建第一个 script 元素 const script1 = document.createElement('script'); script1.type = 'module'; script1.text = ` import RefreshRuntime from '${LOCAL_URL}/@react-refresh'; RefreshRuntime.injectIntoGlobalHook(window); window.$RefreshReg$ = () => {}; window.$RefreshSig$ = () => (type) => type; window.__vite_plugin_react_preamble_installed__ = true; `; document.head.appendChild(script1); // 创建第二个 script 元素 const script2 = document.createElement('script'); script2.type = 'module'; script2.src = `${LOCAL_URL}/@vite/client`; document.head.appendChild(script2); // 创建第三个 script 元素 const script3 = document.createElement('script'); script3.type = 'module'; script3.src = `${LOCAL_URL}/src/main.tsx`; document.head.appendChild(script3); } })();