表白:黑白圣堂血天使,天劍鬼刀阿修羅。 講解對(duì)象:/content.js里面定義的操作為什么網(wǎng)頁(yè)沒(méi)有按照預(yù)期執(zhí)行或者說(shuō)執(zhí)行了沒(méi)效果??? 作者:融水公子 rsgz ===
今天做了一個(gè)插件。
content.js主要負(fù)責(zé)和頁(yè)面交互 改動(dòng)頁(yè)面元素的。服務(wù)工作者線(xiàn)程主要傳遞消息或者管理功能的
今天想利用content.js和頁(yè)面能夠交互的特點(diǎn),做一款插件去除某個(gè)網(wǎng)站 一訪(fǎng)問(wèn)就跳出一個(gè)div廣告 擋住用戶(hù)繼續(xù)瀏覽的東西
content.js 里面的邏輯 每隔3秒去除廣告一次,總共去除1分鐘 {
var intervalId = setInterval(myFunction, 3000); // 每隔3秒鐘執(zhí)行一次
function myFunction() {
try {
// 在這里寫(xiě)你的代碼邏輯
var ad = document.querySelectorAll("div#ADS-block-detect")[0];
console.log(ad);
ad.style.display = "none";
console.log(ad.style.display);
} catch (error) {
console.error("出現(xiàn)錯(cuò)誤:", error);
}
// 檢查是否已經(jīng)執(zhí)行了1分鐘
if (new Date() - startTime >= 60000) {
clearInterval(intervalId); // 停止定時(shí)器
}
}
var startTime = new Date(); // 記錄開(kāi)始執(zhí)行的時(shí)間
} 之前就簡(jiǎn)單的寫(xiě)了一個(gè)邏輯var ad = document.querySelectorAll("div#ADS-block-detect")[0];
console.log(ad);
ad.style.display = "none";
console.log(ad.style.display);我發(fā)現(xiàn)控制臺(tái)輸出的結(jié)果預(yù)期的都沒(méi)問(wèn)題
 但是那個(gè)代碼還是沒(méi)有去除
我就想是不是加載時(shí)間延遲的問(wèn)題?后來(lái)我就這樣寫(xiě) 來(lái)一個(gè)延遲五秒執(zhí)行動(dòng)作function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
delay(5000);
var ad = document.querySelectorAll("div#ADS-block-detect")[0];
console.log(ad);
ad.style.display = "none";
console.log(ad.style.display);遺憾的是 控制臺(tái)的結(jié)果是預(yù)期的,但是網(wǎng)頁(yè)上面的div仍然沒(méi)有去除
我進(jìn)一步去思考 哪里不對(duì)勁?因?yàn)槭菄?guó)外網(wǎng)站 延遲的時(shí)候有長(zhǎng)有短。總不可能定義1分鐘后再去出去div?這不現(xiàn)實(shí),后來(lái)綜合考慮之下,決定設(shè)置總的去除時(shí)間是1分鐘,每間隔3秒去除一次廣告
經(jīng)過(guò)實(shí)驗(yàn)。不僅僅是控制臺(tái)符合預(yù)期,現(xiàn)實(shí)網(wǎng)頁(yè)也是符合預(yù)期的。非常好。
但是目前想不到辦法能檢測(cè)那個(gè)廣告被去除之后,怎么讓代碼執(zhí)行的動(dòng)作停止下來(lái),我設(shè)置的執(zhí)行一分鐘,那么代碼還是會(huì)執(zhí)行一分鐘,并不會(huì)提前停止的
當(dāng)然了,如果是頁(yè)面上去添加一個(gè)按鈕去除,會(huì)更加的精準(zhǔn),因?yàn)槿搜勰軠?zhǔn)確的判斷廣告什么時(shí)候跳出來(lái),點(diǎn)擊按鈕之后去除,人還能判斷是否去除,沒(méi)有去除再點(diǎn)擊一下即可
=== 公眾號(hào):不浪仙人 謝謝大家的支持!可以點(diǎn)擊我的頭像,進(jìn)入我的空間瀏覽更多文章呢。建議大家360doc[www.ahfyzs.com]注冊(cè)一個(gè)賬號(hào)登錄,里面真的有很多優(yōu)秀的文章,歡迎大家的到來(lái)。 --- ';
|