隨著網(wǎng)絡(luò)廣告業(yè)的不斷發(fā)展與壯大,針對(duì)廣告阻礙用戶體驗(yàn)的問題也日益嚴(yán)重化。特別是在一些小型網(wǎng)站上,廣告擾眼的現(xiàn)象更為明顯。
那么,如何屏蔽這些針對(duì)用戶體驗(yàn)造成較大影響的廣告呢?這就需要依靠javascript技術(shù)了。
首先,我們可以使用javascript查找網(wǎng)頁(yè)上的廣告,然后通過(guò)removeChild方法移除這些廣告元素節(jié)點(diǎn)。例如:
var ads = document.getElementsByTagName('div'); for (var i=0; i以上代碼會(huì)找到所有class為'ads'的div元素,并移除他們。
但是,在有些情況下,網(wǎng)站會(huì)使用javascript來(lái)加載廣告,此時(shí)我們需要先等待廣告加載完成后再移除。可以使用Mutation Observer來(lái)監(jiān)聽節(jié)點(diǎn)的增加和刪除,如下:
var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { mutation.addedNodes.forEach(function(node) { if (node.nodeType === 1) { var ads = node.getElementsByClassName('ads'); if (ads && ads.length >0) { node.removeChild(ads[0]); } } }); }); }); observer.observe(document, { childList: true, subtree: true });以上代碼會(huì)監(jiān)聽document元素以及所有子元素的變化,并在新元素添加到DOM樹中時(shí)檢查是否存在類名為'ads'的元素節(jié)點(diǎn),如存在,則移除該節(jié)點(diǎn)。
還有一種情況是,有些網(wǎng)站會(huì)檢測(cè)瀏覽器插件是否已經(jīng)屏蔽了廣告,如果檢測(cè)到了,則會(huì)禁止使用該網(wǎng)站。那么如何讓我們的屏蔽廣告腳本不被檢測(cè)到呢?可以將腳本以函數(shù)的形式封裝起來(lái),使用eval()函數(shù)執(zhí)行。例如:
var script = "function removeAds() { \ var ads = document.getElementsByTagName('div'); \ for (var i=0; i以上代碼使用eval()函數(shù)執(zhí)行封裝好的腳本,將屏蔽廣告的操作保存為函數(shù)。然后,通過(guò)調(diào)用該函數(shù)來(lái)去除廣告元素節(jié)點(diǎn)。
總而言之,javascript的強(qiáng)大功能能夠讓我們?cè)诓煌闆r下屏蔽廣告,提高用戶體驗(yàn)。這也需要我們不斷研究和創(chuàng)新,才能避免廣告的干擾,讓用戶更加享受網(wǎng)絡(luò)世界的美好。