сталкивался с похожей необходимость, т.к. API попадало в "ru AdList" , решал таким образом :
export default function detectAdBlock(){
return new Promise((resolve) => {
const adElement = document.createElement("div");
adElement.classList.add('adsbygoogle');
adElement.style.cssText = 'height: 1px; width: 1px; background-color: transparent';
document.body.appendChild(adElement);
const adElementStyle = getComputedStyle(adElement, null);
window.setTimeout(()=>{
if(adElementStyle.display === 'none'){
resolve(true)
}else{
resolve(false)
}
document.body.removeChild(adElement);
}, 20)
})
}
стоит учитывать, что у расширений приоритет выше чем у скриптов => в моём случае выбивал требование добавить сайт в whitelist, т.к. в противном случае замечательные регулярки "AdList'а" не давали получать данные с API