【Tampermonkey】每次刷新CSDN博客主頁時,自動顯示新增訪問量(對比上次刷新時)

思路:
上一次的訪問量會保存到cookie中。每次刷新時,都會從cookie中獲取上一次的訪問量,與當前訪問量相減即可。博客主頁(所有用戶的主頁)用的是一個cookie,博文頁面(所有用戶的所有博文)用的是另一個cookie。一共就這兩類cookie。然後我把match的網頁寫死了,只針對我個人博客的主頁運行腳本,其他網站一律不運行腳本。這樣就不會衝突了,除非打開多個我個人的博客主頁。

我只是做了訪問量,也可以推廣到其他的數據上,原理都是一樣的。


運行結果:
在這裏插入圖片描述


代碼實現:

// ==UserScript==
// @name         CSDN訪問量增量顯示
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://blog.csdn.net/zxc120389574
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // Your code here...

    //document.cookie="count="+333 //將cookie寫入客戶端
    //document.cookie="count="+635 //將cookie寫入客戶端
    //alert(getCookie("count"))
    var x=document.getElementById("asideProfile");
    var arr = getClassById("asideProfile","data-info d-flex item-tiling")
    /*
    for (var i = 0; i < arr.length; i++){
      alert(arr[i].innerHTML)
    }*/
    //var visit_obj = getClassByObj(arr[0],"count")[4];
    var visit_obj = getClassByObj(arr[0],"text-center")[4];
    //alert(visit_obj.innerHTML)
    var visitor_count = visit_obj.title
    var last_count = getCookie("count")
    //alert(visitor_count)
    visit_obj = getClassByObj(visit_obj,"count")[0]
    visit_obj.innerHTML = visitor_count+"<font color='red'>(+"+(visitor_count-last_count)+")</font>"
    document.cookie="count="+visitor_count
})();

function getCookie(name)
{
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg)){
        return unescape(arr[2]);
    }
    else{
        return null;
    }
}

function getClassById(parent_id,clsName){ // 包含所有所有的節點(子節點,孫節點,孫孫節點···)
    var oParent = document.getElementById(parent_id);
    var boxArr = new Array();
    var oElements  = oParent.getElementsByTagName('*');
    for(var i=0;i<oElements.length;i++){
         if(oElements[i].className == clsName){ // 也可以改成到其他的屬性
            boxArr.push(oElements[i]);
        }
     }
    return boxArr;
}



function getClassByObj(parent_obj,clsName){ // 包含所有所有的節點(子節點,孫節點,孫孫節點···)
    var oParent = parent_obj;
    var boxArr = new Array();
    var oElements  = oParent.getElementsByTagName('*');
    for(var i=0;i<oElements.length;i++){
         if(oElements[i].className == clsName){ // 也可以改成到其他的屬性
            boxArr.push(oElements[i]);
        }
     }
    return boxArr;
}





參考:
https://www.cnblogs.com/llljpf/p/10485464.html
https://www.cnblogs.com/padding1015/p/6767109.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章