DIY 博客全文界面的推薦、反對、加關注、返回頂部、快速評論等小功能的集成


博客園已經很不錯了,但作為比較“挑剔”的用戶,在使用的過程中,還是有一些地方不爽的。

我不是一個專業的前台程序員,也只能憑借自己蹩腳的JS和CSS知識完成對頁面的小改造(專業的大蝦莫要鄙視呀。。)。

這里給大家分享出來,博大家一笑。覺得有用的可以直接拿去。(本來也沒啥技術含量的)



先說說我不習慣的部分:

1、在大概掃一眼別人寫的博客的時候,我就有“推薦”或者“反對”沖動,
可是,兩個按鈕在哪兒呢? 在正文的最底部,我還得拉到最底部才能完成對一篇文章的“批判”。

2、一般比較負責任的博客(篇幅比較小的例外,例如本文),都會有目錄,這樣讀者讀起來也方便,直接讀自己感興趣的章節就好了。
於是乎,點擊了某段的鏈接,讀完該段之后,想回到目錄處。這個時候咋辦呢? 我次啊,要么到對底部,點擊返回頂部,要么用滾輪滾到頂部。
也許有的人說,那有什么啊。但對於“挑剔”的“懶惰”的我,那簡直是噩夢。

3、如果覺得文章比較靠譜,也比較合口味,通常情況下就會關注博主,但是我到哪里找博主呢?
如果沒有對模板進行改動的話,博主一般在正文的最底部。

4、如果文章哪里寫的比較好,或者哪里寫的和自己想的有些出入,我想要“吐槽”,這時候要咋整?
Oh god  還在最底部,作為像我這樣記性不好人來說,沒准剛滑到底部我就忘了“槽點”了。



 

開始動手DIY 

第一步:查看“推薦”、“反對”的元素

可以看到 “推薦”和“反對” 元素共同在一個ID為 div_digg 的div元素中。圖中中間紅框部分是該元素的CSS代碼。

我想讓它鎖定在正文的右下方,保持不動。於是就在博客設置->頁面定制CSS代碼里添加該元素的CSS代碼。

#div_digg {
    position: fixed;
    bottom: 0px;
    right: 250px;
    padding: 8px 8px 8px 10px;
    background-color: #fff;
    border: 1px solid #D9DBE1;
}

 

就可以達到我想要的效果了。這里我想說的是,具體的位置得根據每個人使用的博客模板設定

第二步:在第一步的基礎上,往該元素上添加元素“關注博主”。

原理是這樣的,在元素中添加一個子元素,子元素有鏈接到“加關注”的JS函數。

關注的JS函數已經存在了,我能只需要找到這個函數名就可以了。(關於怎么查找的,應該很簡單,由於要截很大的圖,這里就略過了。)

函數名為c_follow(); 但是你要是用JS功能,你得申請JS權限,給人家發個郵件說明下就好了。

我要做的就是找到父元素,生成一個新元素,添加到父元素中即可。廢話少說,看代碼。

 1 <head>
 2     <script type="text/javascript">
 3 
 4         /*在div_digg中添加關注鏈接*/
 5         var div_digg = document.getElementById("div_digg");
 6         
 7         var my_div = document.createElement("div");
 8         my_div.style.padding="0 0 5px 0";
 9         my_div.innerHTML = "<a onclick=\"javascript:c_follow"+"();\" href=\"javascript:void(0);\" style=\"font-weight: bold; padding-left: 5px;\">關注 Googny</a>"
10         
11         div_digg.insertBefore(my_div,div_digg.firstChild);
12         /*添加關注鏈接結束*/
13     </script>
14 </head>

 

 

這里要說明一個問題,第9行代碼中的onclick屬性,我將c_follow(); 分在了字符串的兩部分中。 

我這樣做的原因是:如果我寫成 c_follow();后,在我保存之后再看這段代碼,c_follow() 被空字符串代替了。

我明明申請了JS的使用權限的,而且也得到肯定的回復了,為什么還要這樣?(現在還不太明白)所以我將函數調用分在了兩個字符串的兩部分。

效果如下圖所示:

第三步:添加"快速評論"和"返回頂部"功能:

先給出代碼(在第二步的基礎上),再進行分析。

 1 <head>
 2     <script type="text/javascript">
 3         function focusFunction(){ document.getElementById("tbCommentBody").focus(); }
 4         
 5         /*在div_digg中添加關注鏈接*/
 6         var div_digg = document.getElementById("div_digg");
 7         
 8         var my_div = document.createElement("div");
 9         my_div.style.padding="0 0 5px 0";
10         my_div.innerHTML = "<a onclick=\"javascript:c_follow"+"();\" href=\"javascript:void(0);\" style=\"font-weight: bold; padding-left: 5px;\">關注 Googny</a>"
11         
12         div_digg.insertBefore(my_div,div_digg.firstChild);
13         /*添加關注鏈接結束*/
14          /*添加評論快速入口*/
15         document.getElementById("digg_tips").innerHTML = "<a onclick=\"javascript:focusFunction();\" href=\"javascript:void(0);\" style=\"font-weight: bold; padding-left: 5px;\">快速評論</a>&nbsp;&nbsp;<a href=\"#top\" style=\"font-weight: bold; padding-left: 5px;\">返回頂部</a>";
16 
17     </script>
18 </head>

 

首先 在第3行聲明一個函數 focusFunction () ,該函數通過ID獲取textarea元素,並獲取焦點。

然后在第15行添加元素到digg_tipps元素(其實就是將原來元素里的內容“(請您對文章做出評價)”給覆蓋了)。
=====修正未登錄客戶快速評論無響應bug====

function focusFunction(){
    var tbEl = document.getElementById("tbCommentBody");
    if(tbEl)  
        tbEl.focus();
    else   
        window.location.href = "http://passport.cnblogs.com/login.aspx?";
}

=====完畢(那些點反對的人難道是為了幫樓主測試bug的嗎?放心,我沒有把推薦的響應函數放在反對上。)=====

最終結果如圖所示:



 

好了,這樣是不是方便讀者許多,雖然沒啥技術含量,但是的確很爽。

如果你覺得這個想法不錯,分享給更多的人吧,不要錢的喲。

更多內容盡在這里:相關博客一覽表

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM