Chrome теперь имеет возможность отправлять сообщения с веб-сайта на расширение.
Так что в расширении background.js (content.js не будет работать) добавьте что-то вроде:
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
if (request) {
if (request.message) {
if (request.message == "version") {
sendResponse({version: 1.0});
}
}
}
return true;
});
Это позволит вам сделать звонок с веб-сайта:
var hasExtension = false;
chrome.runtime.sendMessage(extensionId, { message: "version" },
function (reply) {
if (reply) {
if (reply.version) {
if (reply.version >= requiredVersion) {
hasExtension = true;
}
}
}
else {
hasExtension = false;
}
});
Затем вы можете проверить переменную hasExtension. Единственный недостаток - это асинхронный вызов, поэтому вам нужно как-то обойти это.
Изменить: Как уже упоминалось ниже, вам нужно добавить запись в manifest.json перечисление доменов, которые могут сообщать ваш аддон. Например:
"externally_connectable": {
"matches": ["*://localhost/*", "*://your.domain.com/*"]
},