mirror of
https://github.com/QuiteAFancyEmerald/Holy-Unblocker.git
synced 2025-05-12 19:40:02 -04:00
Updated a few more things
This commit is contained in:
parent
c827e9f7e1
commit
73cdcb3186
47 changed files with 35805 additions and 1102 deletions
69
lib/browser/attributes.js
Normal file
69
lib/browser/attributes.js
Normal file
|
@ -0,0 +1,69 @@
|
|||
const { overrideAccessors } = require("./utils");
|
||||
|
||||
function createAttributeRewriter(ctx) {
|
||||
if (ctx.serviceWorker) return () => null;
|
||||
const {
|
||||
HTMLMediaElement,
|
||||
HTMLScriptElement,
|
||||
HTMLAudioElement,
|
||||
HTMLVideoElement,
|
||||
HTMLInputElement,
|
||||
HTMLEmbedElement,
|
||||
HTMLTrackElement,
|
||||
HTMLAnchorElement,
|
||||
HTMLIFrameElement,
|
||||
HTMLAreaElement,
|
||||
HTMLLinkElement,
|
||||
HTMLBaseElement,
|
||||
HTMLFormElement,
|
||||
HTMLImageElement,
|
||||
HTMLSourceElement,
|
||||
} = ctx.window;
|
||||
function rewriteAttribute(elem, attr, handler) {
|
||||
if (Array.isArray(elem)) {
|
||||
elem.forEach(elem => rewriteAttribute(elem, attr, handler));
|
||||
return true;
|
||||
};
|
||||
if (!elem.prototype || !elem.prototype.hasOwnProperty(attr)) return;
|
||||
const proto = elem.prototype;
|
||||
overrideAccessors(proto, attr, {
|
||||
getter: (target, that) => {
|
||||
const val = target.call(that);
|
||||
switch(handler) {
|
||||
case 'url':
|
||||
return ctx.url.unwrap(val, ctx.meta);
|
||||
case 'srcset':
|
||||
return ctx.html.unsrcset(val, ctx.meta);
|
||||
case 'delete':
|
||||
return ctx.originalFn.elementGetAttribute.call(that, `corrosion-attr`) || '';
|
||||
default:
|
||||
return val;
|
||||
};
|
||||
},
|
||||
setter: (target, that, [ val ]) => {
|
||||
switch(handler) {
|
||||
case 'url':
|
||||
return target.call(that, ctx.url.wrap(val, ctx.meta));
|
||||
case 'srcset':
|
||||
return target.call(that, ctx.html.srcset(val, ctx.meta));
|
||||
case 'delete':
|
||||
ctx.originalFn.elementSetAttribute.call(that, `corrosion-attr`, val);
|
||||
return val;
|
||||
default:
|
||||
return target.call(that, val);
|
||||
};
|
||||
},
|
||||
});
|
||||
return true;
|
||||
};
|
||||
return function rewriteAttributes() {
|
||||
rewriteAttribute([ HTMLScriptElement, HTMLMediaElement, HTMLImageElement, HTMLAudioElement, HTMLVideoElement, HTMLInputElement, HTMLEmbedElement, HTMLIFrameElement, HTMLTrackElement, HTMLSourceElement ], 'src', 'url');
|
||||
rewriteAttribute(HTMLFormElement, 'action', 'url');
|
||||
rewriteAttribute([ HTMLAnchorElement, HTMLAreaElement, HTMLLinkElement, HTMLBaseElement ], 'href', 'url');
|
||||
rewriteAttribute([ HTMLImageElement, HTMLSourceElement ], 'srcset', 'srcset');
|
||||
rewriteAttribute(HTMLScriptElement, 'integrity', 'delete');
|
||||
return true;
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = createAttributeRewriter;
|
Loading…
Add table
Add a link
Reference in a new issue