您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
当前为
// ==UserScript== // @name SingleFile - 单文件保存网页 // @namespace SingleFile // @version 0.1 // @description try to take over the world! // @author PY-DNG // @include * // @grant GM_xmlhttpRequest // ==/UserScript== (function() { 'use strict'; // User Swiches const developer = true; // variants let i, j; // Get HTML const HTML_ORGINAL = document.lastChild.outerHTML; let HTML = HTML_ORGINAL; /*let HTMLDoc = new Document(); HTMLDoc.open(); HTMLDoc.write(HTML);*/ if (developer) {console.log('HTML_ORGINAL', HTML_ORGINAL, HTML);}; // Remove <script>s const scripts = document.querySelectorAll('script'); for (i = 0; i < scripts.length; i++) { HTML = HTML.replace(scripts[i].outerHTML, ''); } //HTML = HTML.replaceAll(/\r?\n?<script.*?>[\s\S]*?<\/script>/g, ''); if (developer) {console.log('<script> DEALED', HTML, scripts);}; // Deal CSS <link>s let CSSs = {loaded: [], style: []}; let CSSLinks = document.querySelectorAll('link[rel="stylesheet"]'); for (i = 0; i < CSSLinks.length; i++) { CSSs.loaded[i] = null; getCSSFromLink(CSSLinks, CSSs, i); } //while(CSSs.loaded.includes(null)) {}; //if (developer) {console.log('CSS DEALED', HTML, CSSs);}; function getCSSFromLink(CSSLinks, CSSs, index) { GM_xmlhttpRequest({ method: 'GET', url: CSSLinks[index].href, responseType: 'text', onload: function(re) { if (re.readyState === 4) { // request success CSSs.loaded[index] = true; CSSs.style[index] = re.responseText; HTML = HTML.replaceAll(CSSLinks[index].outerHTML, '<style>' + CSSs.style[index] + '</style>'); if (developer) {console.log('CSS DEALED', [HTML, CSSs]);}; } else { // request failed console.log('XMLHttpRequest get CSS error:', CSSLinks, CSSs, index, re); if (developer) {debugger}; CSSs.loaded[index] = false; } }, onabort : function() {CSSs.loaded[index] = false;} }) console.log('request', index, CSSLinks); } function getBASE64FromPic(img) { if (typeof(img) === 'string') { // } } })();