Files
BotExt/app/index.js
T
2023-09-05 22:48:20 +08:00

87 lines
2.8 KiB
JavaScript

const DYNAMIC_SCRIPT_ID = 'add-record-script';
async function isDynamicContentScriptRegistered() {
const scripts = await chrome.scripting.getRegisteredContentScripts();
return scripts.some((s) => s.id === DYNAMIC_SCRIPT_ID);
}
async function getActiveTab() {
const [tab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true });
return tab;
}
document.querySelector('#addRecord').addEventListener('click', async () => {
console.log('[Demo] ==============================================');
console.log('[Demo] Test send message from popup script to content script');
const tab = await getActiveTab();
const ret = await chrome.tabs.sendMessage(tab.id, { msg: 'ping from popup script', func: 'addRecord' });
console.log('[Demo] receive', ret);
});
document.querySelector('#deleteRecord').addEventListener('click', async () => {
console.log('[Demo] ==============================================');
console.log('[Demo] Test send message from popup script to content script');
const tab = await getActiveTab();
const ret = await chrome.tabs.sendMessage(tab.id, { msg: 'ping from popup script', func: 'deleteRecord' });
console.log('[Demo] receive', ret);
});
var port = null;
function appendMessage(text) {
document.getElementById('response').innerHTML += "<p>" + text + "</p>";
}
function updateUiState() {
if (port) {
document.getElementById('connect-button').style.display = 'none';
document.getElementById('input-text').style.display = 'block';
document.getElementById('send-message-button').style.display = 'block';
} else {
document.getElementById('connect-button').style.display = 'block';
document.getElementById('input-text').style.display = 'none';
document.getElementById('send-message-button').style.display = 'none';
}
}
function sendNativeMessage() {
message = { "text": document.getElementById('input-text').value };
port.postMessage(message);
appendMessage("Sent message: <b>" + JSON.stringify(message) + "</b>");
}
function onNativeMessage(message) {
appendMessage("Received message: <b>" + JSON.stringify(message) + "</b>");
}
function onDisconnected() {
appendMessage("Failed to connect: " + chrome.runtime.lastError.message);
port = null;
updateUiState();
}
function connect() {
var hostName = "com.google.chrome.botext";
appendMessage("Connecting to native messaging host <b>" + hostName + "</b>")
port = chrome.runtime.connectNative(hostName);
port.onMessage.addListener(onNativeMessage);
port.onDisconnect.addListener(onDisconnected);
updateUiState();
}
document.addEventListener('DOMContentLoaded', function () {
document.getElementById('connect-button').addEventListener(
'click', connect);
document.getElementById('send-message-button').addEventListener(
'click', sendNativeMessage);
updateUiState();
});