Greasy Fork is available in English.
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') {
//
}
}
})();