mirror of
https://git.mirrors.martin98.com/https://github.com/cilame/v_jstools
synced 2025-04-23 06:09:50 +08:00
61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
var typeMap = {
|
|
"txt" : "text/plain",
|
|
"html" : "text/html",
|
|
"htm" : "text/html",
|
|
"css" : "text/css",
|
|
"js" : "text/javascript",
|
|
"json" : "text/json",
|
|
"xml" : "text/xml",
|
|
"jpg" : "image/jpeg",
|
|
"gif" : "image/gif",
|
|
"png" : "image/png",
|
|
"webp" : "image/webp"
|
|
}
|
|
|
|
function getLocalFileUrl(url) {
|
|
var arr = url.split('.');
|
|
var type = arr[arr.length-1];
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open('get', url, false);
|
|
xhr.send(null);
|
|
var content = xhr.responseText || xhr.responseXML;
|
|
if (!content) {
|
|
return false;
|
|
}
|
|
var wordArray = CryptoJS.enc.Utf8.parse(content);
|
|
var base64 = CryptoJS.enc.Base64.stringify(wordArray);
|
|
return ("data:" + (typeMap[type] || typeMap.txt) + ";charset=utf-8;base64," + base64);
|
|
}
|
|
|
|
chrome.webRequest.onBeforeRequest.addListener(function (details) {
|
|
if(!JSON.parse(localStorage.webRedirect_toggle || "false")){
|
|
return {}
|
|
}
|
|
var url = details.url;
|
|
for (var i = 0; i < webRedirect.length; i++) {
|
|
var [mstr, rurl] = webRedirect[i]
|
|
if (url.indexOf(mstr) != -1){
|
|
if (rurl.trim().indexOf('file:///') == 0){
|
|
var rdata = getLocalFileUrl(rurl)
|
|
if (rdata){
|
|
return { redirectUrl: rdata };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return {}
|
|
},
|
|
{urls: ["<all_urls>"]},
|
|
["blocking"]
|
|
);
|
|
|
|
var webRedirect = []
|
|
window.addEventListener('storage', function(){
|
|
webRedirect = JSON.parse(localStorage.webRedirect || "[]")
|
|
}, false);
|
|
chrome.storage.local.get([
|
|
"response_changer",
|
|
], function(res){
|
|
var init_data = JSON.parse(res["response_changer"] || "[]")
|
|
webRedirect = init_data
|
|
}) |