aboutsummaryrefslogtreecommitdiff
path: root/content/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'content/main.js')
-rw-r--r--content/main.js162
1 files changed, 82 insertions, 80 deletions
diff --git a/content/main.js b/content/main.js
index 12a94c9..282c7b5 100644
--- a/content/main.js
+++ b/content/main.js
@@ -1,95 +1,97 @@
/**
-* Myext main content script run in all frames
-*
-* Copyright (C) 2021 Wojtek Kosior
-*
-* Dual-licensed under:
-* - 0BSD license
-* - GPLv3 or (at your option) any later version
-*/
+ * Myext main content script run in all frames
+ *
+ * Copyright (C) 2021 Wojtek Kosior
+ *
+ * Dual-licensed under:
+ * - 0BSD license
+ * - GPLv3 or (at your option) any later version
+ */
-var url_re = /^([^#]*)((#[^#]*)(#.*)?)?$/;
-var match = url_re.exec(document.URL);
-var base_url = match[1];
-var first_target = match[3];
-var second_target = match[4];
+"use strict";
-var block = true;
-if (first_target !== undefined &&
- first_target === "#myext-allow") {
- block = false;
- console.log(["allowing", document.URL]);
- if (second_target !== undefined)
- window.location.href = base_url + second_target;
- else
- history.replaceState(null, "", base_url);
-} else {
- console.log(["not allowing", document.URL]);
-}
+(() => {
+ const handle_page_actions = window.handle_page_actions;
-function handle_mutation(mutations, observer)
-{
- if (document.readyState === 'complete') {
- console.log("complete");
- observer.disconnect();
- return;
+ var url_re = /^([^#]*)((#[^#]*)(#.*)?)?$/;
+ var match = url_re.exec(document.URL);
+ var base_url = match[1];
+ var first_target = match[3];
+ var second_target = match[4];
+
+ var block = true;
+ if (first_target !== undefined &&
+ first_target === "#myext-allow") {
+ block = false;
+ console.log(["allowing", document.URL]);
+ if (second_target !== undefined)
+ window.location.href = base_url + second_target;
+ else
+ history.replaceState(null, "", base_url);
+ } else {
+ console.log(["not allowing", document.URL]);
}
- for (let mutation of mutations) {
- for (let node of mutation.addedNodes) {
- if (node.tagName === "SCRIPT")
- block_script(node);
- else
- sanitize_attributes(node);
+
+ function handle_mutation(mutations, observer)
+ {
+ if (document.readyState === 'complete') {
+ console.log("complete");
+ observer.disconnect();
+ return;
+ }
+ for (let mutation of mutations) {
+ for (let node of mutation.addedNodes) {
+ if (node.tagName === "SCRIPT")
+ block_script(node);
+ else
+ sanitize_attributes(node);
+ }
}
}
-}
-function block_script(node)
-{
- console.log(node);
+ function block_script(node)
+ {
+ console.log(node);
- /*
- * Disabling scripts this way allows them to still be relatively accessed
- * in case they contain some useful data.
- */
- if (node.hasAttribute("type"))
- node.setAttribute("blocked-type", node.getAttribute("type"));
- node.setAttribute("type", "application/json");
-}
+ /*
+ * Disabling scripts this way allows them to still be relatively
+ * easily accessed in case they contain some useful data.
+ */
+ if (node.hasAttribute("type"))
+ node.setAttribute("blocked-type", node.getAttribute("type"));
+ node.setAttribute("type", "application/json");
+ }
-function sanitize_attributes(node)
-{
- if (node.attributes === undefined)
- return;
+ function sanitize_attributes(node)
+ {
+ if (node.attributes === undefined)
+ return;
- /* We have to do it in 2 loops, removing attribute modifies our iterator */
- let attr_names = [];
- for (let attr of node.attributes) {
- let attr_name = attr.localName;
- if (attr_name.startsWith("on"))
- attr_names.push(attr_name);
- }
+ /*
+ * We have to do it in 2 loops, removing attribute modifies
+ * our iterator
+ */
+ let attr_names = [];
+ for (let attr of node.attributes) {
+ let attr_name = attr.localName;
+ if (attr_name.startsWith("on"))
+ attr_names.push(attr_name);
+ }
- for (let attr_name of attr_names) {
- node.removeAttribute(attr_name);
- console.log("sanitized", attr_name);
+ for (let attr_name of attr_names) {
+ node.removeAttribute(attr_name);
+ console.log("sanitized", attr_name);
+ }
}
-}
-async function run_module()
-{
- let src = chrome.runtime.getURL("content/page_actions.mjs");
- let module = await import(src);
- module.default();
-}
-
-if (block) {
- var observer = new MutationObserver(handle_mutation);
- observer.observe(document.documentElement, {
- attributes: true,
- childList: true,
- subtree: true
- });
-}
+ if (block) {
+ var observer = new MutationObserver(handle_mutation);
+ observer.observe(document.documentElement, {
+ attributes: true,
+ childList: true,
+ subtree: true
+ });
+ }
-run_module();
+ handle_page_actions();
+})();