В основном я обнаруживаю наличие CSS, который скрывает рекламу, и если я его найду, я бы хотел показать небольшое сообщение.Однако я обнаружил, что даже если весь этот код выполняется при загрузке dom ($(function(){})
), он все равно работает, только если я установил тайм-аут, даже если тайм-аут равен нулю.Кто-нибудь знает, почему это происходит (проверено в Chrome на Mac)
function detect(callback){
for (var x = 0; x < document.styleSheets.length; x++) {
var rules = document.styleSheets[x].cssRules;
for (var i = 0; i < rules.length; i++) {
if(rules[i].style.display == 'none' && [].slice.call(rules[i].selectorText.match(/ads/ig), 0).length > 10)
{
return callback()
}
}
}
}
// fails, the plugins css hasn't been applied yet
detect(function(){
$("#sorryYouDontLikeOurAds").show()
})
// but this works even with a timeout of zero
setTimeout(function(){
detect(function(){
$("#sorryYouDontLikeOurAds").show()
})
}, 0);