Skip to content

Instantly share code, notes, and snippets.

@maxshirshin
Created March 9, 2022 17:35
Show Gist options
  • Save maxshirshin/06472e760ae65460f7201e0bd40830b5 to your computer and use it in GitHub Desktop.
Save maxshirshin/06472e760ae65460f7201e0bd40830b5 to your computer and use it in GitHub Desktop.
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request))
})
class ElementHandler {
element(element) {
console.log(`Incoming element: ${element.tagName}`);
switch (element.tagName) {
case 'script':
case 'style':
case 'iframe':
element.remove();
break;
}
switch (element.tagName) {
case 'b':
case 'strong':
case 'i':
element.tagName = 'span';
break;
}
element.removeAttribute('style');
}
comments(comment) {
comment.remove();
}
text(text) {
console.log(`Incoming text: ${text.text}`)
if (/^\s*$/.test(text.text)) {
text.remove()
}
}
}
async function handleRequest(request) {
const r = new Response(`
<div class="test">
<!-- comment -->
Pipa
<script src="a.js">alert('hello')</script>
<b style="font-size: 20px">
some more text
<script src="a.js">alert('hello')</script>
<style>p { font-size: 42px }</style>
</b>
</div>
<b style="font-size: 20px">some more text</b>
`)
const h = new HTMLRewriter().on('div.test *', new ElementHandler())
return h.transform(r);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment