鬥魚擴展--移除廣告優化頁面(五)

来源:https://www.cnblogs.com/likehc/archive/2018/08/04/9419502.html
-Advertisement-
Play Games

代碼可以在 https://pan.baidu.com/s/1uN120-18hvAzELpJCQfbXA 處下載 下麵來 移除 廣告元素,在js目錄下,創建一個 removeAds.js, 用來移除網頁中的廣告元素 修改manifest.json 同時, 發現了一個問題,如果打開的是 https: ...


代碼可以在 https://pan.baidu.com/s/1uN120-18hvAzELpJCQfbXA  處下載

 

下麵來 移除 廣告元素,在js目錄下,創建一個 removeAds.js, 用來移除網頁中的廣告元素

修改manifest.json 

 1 "content_scripts":[{
 2         "js": [
 3             "js/BaseJs/jquery.min.js",
 4             "js/BaseJs/RoomObj.js",            
 5             "js/removeRoom.js",
 6             "js/paizidanmu.js",
 7             "js/removeAds.js",
 8             "js/content_scripts.js"
 9         ],    //要註入的js
10 11     }]

 

同時, 發現了一個問題,如果打開的是 https://www.douyu.com/g_wzry  符合,"matches": ["https://www.douyu.com/*"] 的規則,就會執行所有 註入的js腳本,但是js\paizidanmu.js  獲取 roomId時,js\BaseJs的getRoomId 方法就會出錯,所以try ..catch一下,

 1 //獲取房間id
 2     this.getRoomId = function () {
 3         try{
 4             var roomUrl = $("link[rel='canonical']")[0].href;
 5             var roomUrlArr = roomUrl.split("/");
 6             return roomUrlArr[3];
 7         }catch(err){
 8             return "";
 9         }        
10     };

 

 

我們發現,需要註入腳本都寫在了 頁面載入之後 調用其他方法執行操作,這樣,我們可發判斷roomId 如果為空(不是直播房間頁面),則跳出,節省硬體資源,防止產生錯誤。

paizidanmu.js

window.onload=function(){
    roomId = roomObj.getRoomId();
    if (roomId =="") {return}
    …
};

 

 

removeAds.js 用來 移除 廣告元素,每個人 都有自己的喜好,這裡,我只是按自己的 喜好移除元素的,大家可 自行修改。有的元素載入慢,我用了 迴圈,迴圈10次後終止。

並添加了 3 個 按鈕,用來提升 觀看體驗

1.隱藏\顯示頭部信息

 

 

 

2.顯示\隱藏 排行榜,隱藏時,會獲取更多的彈幕視野。

 

 

 

3.顯示\隱藏 直播公告 ,如果打開頁面且直播公告為空,則自動 隱藏。

 

 

removeAds.js 完整代碼 如下

  1 var removeAdsIndex =0; 
  2 function removeAds() {
  3     var removeAdsTimer=self.setInterval(function(){        
  4         if (removeAdsIndex>=10) {
  5             window.clearInterval(removeAdsTimer);
  6         }
  7         $("#left").remove();    //左邊側欄
  8         $(".recommendApp-cbeff7").remove();    //下載鬥魚APP
  9         $(".live-room-normal-left").remove();    //視頻下方廣告
 10         $(".yuba-group-active").remove();    //懸浮主播頭像,小組動態
 11         $(".recording-wrap").remove();    //TA的視頻
 12         $(".sq-wrap").remove();    //分享按鈕
 13         $(".column.rec").remove();    //主播也愛看
 14         $(".ft-sign-cont").remove();    //任務區,網頁游戲推廣
 15 
 16         $(".showdanmu-f76338").click();    //關閉彈幕
 17         removeAdsIndex++;
 18     },1000);
 19 };
 20 //進行一些頁面排版修改
 21 function youhua() {
 22     $("#header").hide();    //隱藏頭部
 23     setFont();
 24     $("#header").css("border-bottom-width","0px");
 25     $("#mainbody").css("margin-top","0px");    //"50px"
 26     $("#mainbody").css("padding-top","0px");    //"20px"
 27     // 視頻    區域
 28     $("#anchor-info").css("border-top-width","0px");    //"1px"
 29     $("#anchor-info").css("border-left-width","0px");    //"1px"
 30     $("#anchor-info").css("border-right-width","0px");    //"1px"
 31     $("#anchor-info").css("border-bottom-width","0px");    //"1px"
 32     $("#anchor-info").css("margin-bottom","2px");    //"10px"
 33     //任務 、背包
 34     $("#js-stats-and-actions").css("padding-top","4px");    //"14px"
 35     $("#js-stats-and-actions").css("padding-bottom","2px");    //"7px"
 36     $("#js-live-room-normal-equal-right").css("margin-top","0px");    //"24px"
 37 };
 38 
 39 function delayInset() {
 40     //添加 排行on/off 按鈕
 41     var span =document.createElement("span");
 42     span.innerHTML = "排行on";
 43     var ii =document.createElement("i");
 44     ii.setAttribute("class","icon");
 45     var a =document.createElement("a");
 46     a.setAttribute("href","javascript:;");
 47     a.setAttribute("id","fansRankId");
 48     a.appendChild(ii);
 49     a.appendChild(span);
 50     document.getElementsByClassName("chat-cls")[0].appendChild(a);
 51     document.getElementById("fansRankId").onclick = function(){
 52         var fansRan =$("#fansRankId span");
 53         if (fansRan.text() == "排行off") {
 54             fansRan.text("排行on");
 55             $("#js-fans-rank").show();    //粉絲貢獻榜
 56             $("#js-chat-cont").css("top","217px");    //"217px"
 57         }else{
 58             fansRan.text("排行off");
 59             $("#js-fans-rank").hide();    //粉絲貢獻榜
 60             $("#js-chat-cont").css("top","2px");    //"217px"
 61         }
 62     };
 63 
 64     //添加 隱藏\顯示頭部信息 按鈕
 65     var a =document.createElement("a");
 66     a.innerHTML = "隱藏頭部信息";
 67     a.setAttribute("href","javascript:;");
 68     a.setAttribute("id","headInfoId");
 69     document.getElementsByClassName("r-else clearfix")[0].appendChild(a);
 70     document.getElementById("headInfoId").onclick = function(){
 71         setFont();
 72         var headInfo =$("#headInfoId");
 73         if (headInfo.text() == "顯示頭部信息") {
 74             headInfo.text("隱藏頭部信息");
 75             $("#header").hide();    //隱藏頭部
 76         }else{
 77             headInfo.text("顯示頭部信息");
 78             $("#header").show();    //隱藏頭部
 79         }
 80     };
 81 
 82     //添加 on\of  顯示\隱藏直播公告 按鈕
 83     var a =document.createElement("a");
 84     a.innerHTML = "on";
 85     if ($(".column-cotent").text() =="") {
 86         $(".live-room-normal-right.fl").hide();    //直播公告
 87         a.innerHTML = "off";
 88     }
 89     a.setAttribute("href","javascript:;");
 90     a.setAttribute("id","roomAnnounceId");
 91     document.getElementById("js-shie-gift").appendChild(a);
 92     document.getElementById("roomAnnounceId").onclick = function(){
 93         var roomAnnounce =$("#roomAnnounceId");
 94         if (roomAnnounce.text() == "on") {
 95             roomAnnounce.text("off");
 96             $(".live-room-normal-right.fl").hide();
 97         }else{
 98             roomAnnounce.text("on");
 99             $(".live-room-normal-right.fl").show();
100         }
101     };
102 };
103 // 鬥魚的其他js,觸發一些事件會修改回原來的字體樣式,所以放在了點擊狀況信息時,修改一次字體
104 function setFont() {
105     $(".cs-textarea").css("font-size","14px"); //文字輸入區  字體
106     $(".cs-textarea").css("font-weight","bold");//文字輸入區  字體加粗
107 }
108 $(document).ready(function(){
109     if (roomObj.getRoomId() =="") {
110         return;
111     }
112     removeAds();
113     var youhuaTimer=setTimeout("youhua()",3000);
114     var delayInsetTimer = setTimeout("delayInset()", 2500);
115 });

 

 

 

修改完畢,同步 代碼。。。。。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.顯示分區 show partitions tables; 2.SHELL里導出文件顯示欄位 set hive.cli.print.header ...
  • 最近我問了很多Java開發人員關於最近12個月內他們使用的是什麼大數據工具。 這是一個系列,主題為: 語言 web框架 應用伺服器 SQL數據訪問工具 SQL資料庫 大數據 構建工具 雲提供商 今天我們就要說說大數據。根據維基百科,大數據是數據集的一個廣義的術語,並且該數據集是如此龐大和複雜,以致於 ...
  • 一. 概述 通常來說,死鎖都是應用設計問題,通過調整業務流程,資料庫對象設計,事務大小,以及訪問資料庫的sql語句,絕大部分死鎖都可以避免,下麵介紹幾種避免死鎖的常用 方法. 1. 在應用中,如果不同的程式併發操作多個表,應儘量約定以相同的順序來訪問表,這樣可以大大降低產生死鎖的機會。按順序對錶進行 ...
  • 最早的寫法: 最新的寫法: 新的寫法比原始寫法性能高出太多(原語句執行會超時),最大的原因是對with語句理解有誤!!! ...
  • 在ES6之前,javascript只有全局作用域和函數作用域。所謂作用域就是一個變數定義並能夠被訪問到的範圍。也就是說如果一個變數定義在全局(window)上,那麼在任何地方都能訪問到這個變數,如果這個變數定義在函數內部,那麼就只能在函數內部訪問到這個變數。 全局作用域只要頁面沒關閉就會一直存在,而 ...
  • 不知道從什麼時候開始,單頁網站就悄悄走進人們的視線,尤其是國外的網站,更是鐘愛單頁網站.製作一個全屏滾動的效果,然後每個滾動頁弄一個好看的背景色,配上一些描述性的文字,大家都喜歡這麼弄,仿佛逼格瞬間可以爆表似的.當然,不得不承認,介紹產品的頁面用單頁網站似乎確實高大上的多.在站長之家看到一篇文章,讓... ...
  • 本篇目錄: 1.截取指定位元組數的字元串 2.判斷是否微信 3.獲取時間格式的幾個舉例 4.獲取字元串位元組長度 5.對象克隆、深拷貝 6.組織結構代碼證驗證 7.身份證號驗證 8.js正則為url添加http標識 9.URL有效性校驗方法 10.自定義jsonp方法 11.cookie操作 12.生成 ...
  • BFC的概念以及作用 BFC的定義: 直譯為 。它是一個獨立的渲染區域,只有Block level box參與, 它規定了內部的Block level Box如何佈局,並且與這個區域外部毫不相干。 我們常說的文檔流其實分為==定位流、浮動流和普通流==三種。而 其實就是指BFC中的FC。 是`for ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...