JS узнать, установлено ли расширение Chrome
Мне нужно узнать, установлено ли у пользователя расширение.
Я пытался использовать:
function detectExt(extId, callback){
let oldEl = document.querySelector('#ext_check');
if(oldEl) document.body.removeChild(oldEl);
let s = document.createElement('script');
s.id = 'ext_check';
s.src = `chrome-extension://${extId}/manifest.json`;
s.onload = ()=>{callback(true)};
s.onerror = ()=>{callback(false)};
document.body.appendChild(s);
}
function detectExt(extId, iconFile, callback){
let i = new Image();
i.src = `chrome-extension://${extId}/${iconFile}`;
i.onload = ()=>{callback(true)};
i.onerror = ()=>{callback(false)};
}
Но это не сработало. Есть ли рабочий способ сделать это?
Ответы (1 шт):
Автор решения: another_login
→ Ссылка
Универсального способа, насколько мне известно, нет. Нужно заранее исследовать интересующие расширения и проверить, в манифесте, какие файлы доступны в web_accessible_resources. Ниже пример для расширения AdBlock:
function detect() {
let i = new Image();
i.onload = () => console.log('установлено');
i.onerror = () => console.log('не установлено или отключено');
i.src = 'chrome-extension://gighmmpiobklfepjocnamgkkbiglidom/adblock-ads-blocked-icon.svg';
}
<button onclick=detect()>Проверить</button>