|
globalThis.browser ??= chrome; |
|
console.log("content script loaded"); |
|
|
|
let port = null; |
|
|
|
const openPortButton = document.createElement("button"); |
|
openPortButton.innerText = "Open port"; |
|
openPortButton.addEventListener("click", () => { |
|
console.log("Opening port...") |
|
if (port) { |
|
return alert("Port already open!"); |
|
} |
|
|
|
port = browser.runtime.connect(); |
|
|
|
port.onDisconnect.addListener((p) => { |
|
if (p.error) { |
|
return console.error("Port disconnect error", p.error); |
|
} |
|
console.log("Port disconnected!"); |
|
port = null; |
|
}); |
|
|
|
port.onMessage.addListener((message) => { |
|
console.log("port rec <-", message); |
|
}); |
|
|
|
console.log("Port opened"); |
|
}); |
|
document.body.append(openPortButton); |
|
|
|
|
|
const closePortButton = document.createElement("button"); |
|
closePortButton.innerText = "Close port"; |
|
closePortButton.addEventListener("click", () => { |
|
console.log("Closing port..."); |
|
if (!port) { |
|
alert("No open port!"); |
|
console.log("Port close abandoned"); |
|
return; |
|
} |
|
port.disconnect(); |
|
port = null; |
|
console.log("Port closed"); |
|
}); |
|
document.body.append(closePortButton); |
|
|
|
|
|
const sendMessageButton = document.createElement("button"); |
|
sendMessageButton.innerText = "Send message"; |
|
sendMessageButton.addEventListener("click", () => { |
|
console.log("Sending message..."); |
|
if (!port) { |
|
alert("No open port!"); |
|
console.log("Send message abandoned"); |
|
return; |
|
} |
|
console.log("port snd -> echo"); |
|
port.postMessage("echo"); |
|
}); |
|
document.body.append(sendMessageButton); |