3

Ссылка this post, я пытаюсь использовать executeScript или sendMessage для передачи переменной в мой файл content.js. Использование Chrome Dev инструменты, я вижу, что он достигает мой файл content.js, и он также работает тест оповещение я вставить, но когда дело доходит доonMessage не выполняется при расширении Chrome

chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) { 

он пропускает его полностью. Я не уверен, что здесь происходит?

popup.js

function search() { 
    var name = document.getElementById('txtSearch').value; 
    chrome.tabs.executeScript({ file: "jquery.js" }, function() { 
     chrome.tabs.executeScript(null, { 
      code: 'var name = ' + name + ';' 
     }, function() { 
      chrome.tabs.executeScript({ file: 'content.js' }); 
     }); 
    }); 
} 
document.getElementById('btnSearch').addEventListener('click', search); 

или popup.js с помощью SendMessage

function search() { 
    var name = document.getElementById('txtSearch').value; 
    chrome.tabs.executeScript({ file: "jquery.js" }, function() { 
     chrome.tabs.executeScript({ file: 'content.js' }, function() { 
      chrome.tabs.sendMessage({ name: name }); 
     }); 
    }); 
} 
document.getElementById('btnSearch').addEventListener('click', search); 

content.js

alert('hi'); 
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) { 
    console.log(message.name); 
}); 
+0

А что, если вы удалите предупреждение? 'onMessage' не запускается, если в скрипте содержимого есть диалог блокировки: https://crbug.com/456482 –

ответ

1

REFERENCING другой ответ, который я нашел на SO (не могу найти его атм), Мне не хватало функции, чтобы передать идентификатор вкладки в скрипт содержимого.

chrome.tabs.query({ active: true }, function (tabs) { 
    chrome.tabs.sendMessage(tabs[0].id, {'type': type, 'name': name }); 
}); 
Смежные вопросы