87 lines
2.8 KiB
JavaScript
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();
|
|
});
|
|
|