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