From 01937dc9d5215ef96ce756e3ccda51bf29032f58 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Mon, 10 May 2021 18:07:05 +0200 Subject: initial commit --- content/page_actions.mjs | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 content/page_actions.mjs (limited to 'content/page_actions.mjs') diff --git a/content/page_actions.mjs b/content/page_actions.mjs new file mode 100644 index 0000000..3ce5b73 --- /dev/null +++ b/content/page_actions.mjs @@ -0,0 +1,58 @@ +/** +* Myext handling of page actions in content scripts +* +* Copyright (C) 2021 Wojtek Kosior +* +* Dual-licensed under: +* - 0BSD license +* - GPLv3 or (at your option) any later version +*/ + +import CONNECTION_TYPE from '/common/connection_types.mjs'; +import make_once from '/common/once.mjs'; +import browser from '/common/browser.mjs'; + +var port; +var loaded = false; +var scripts_awaiting = []; + +function handle_message(message) +{ + console.log(["message", message]); + + if (message.inject === undefined) + return; + + for (let script_text of message.inject) { + if (loaded) + add_script(script_text); + else + scripts_awaiting.push(script_text); + } +} + +function document_loaded(event) +{ + console.log("loaded"); + + loaded = true; + + for (let script_text of scripts_awaiting) + add_script(script_text); + + scripts_awaiting = undefined; +} + +function add_script(script_text) +{ + let script = document.createElement("script"); + script.textContent = script_text; + document.body.appendChild(script); +} + +export default function main() { + document.addEventListener("DOMContentLoaded", document_loaded); + port = browser.runtime.connect({name : CONNECTION_TYPE.PAGE_ACTIONS}); + port.onMessage.addListener(handle_message); + port.postMessage({url: document.URL}); +} -- cgit v1.2.3