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 += "

" + text + "

"; } 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: " + JSON.stringify(message) + ""); } function onNativeMessage(message) { appendMessage("Received message: " + JSON.stringify(message) + ""); } 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 " + hostName + "") 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(); });