博客園文章自定義的圖片放大功能失效修復


前言

好一陣子沒逛博客園了, 今天回自己博客搜點東西發現圖片放大功能不好使了(不是之前lightbox效果了),感覺很奇怪,難道博客園樣式升級連這個功能都給我屏蔽了?

當時記錄的博文:博客園文章圖片點擊放大功能升級 - 習慣沉淀 - 博客園 (cnblogs.com)

解決

第一感覺是博客園升級把引入的js屏蔽了,F12發現罪魁禍首是所有的a標簽都被強行加了屬性:

 

 

 因為這段js是自己定義的, 被博客園加上rel屬性后, return的a標簽字符串拼接出現語法錯誤. 導致<img>未按預期加上<a>, 放大功能自然也失效了. 原代碼:

 

 

 方案一: 在核心代碼給img包裹a標簽處手動加上rel

既然被強行加上rel屬性, 那我自己先加上還不行嗎?

"<a rel='nofollow' href='"+$(this).attr("src")+"' data-lightbox='example-set'></a>"

然並卵, 還是會被強制添加rel="nofollow"

方案二: 投機一下

發現個規律, rel屬性都是a標簽的第一個屬性, a標簽被強行加上rel屬性, 那如何識別a標簽的?能不能把<a拆開拼接?轉念一想即使拆開拼接后, 結果不一樣是<a么?

行不行試一下先:

 

 結果竟然成功給img包裹a標簽了

 

 

 

 表示迷門, 觸及到知識盲區了

 

加上的rel="nofollow"有啥用?

nofollow主要有三個作用:
1.防止不可信的內容,最常見的是博客上的垃圾留言與評論中為了獲取外鏈的垃圾鏈接,為了防止頁面指向一些拉圾頁面和站點。
2.付費鏈接:為了防止付費鏈接影響Google的搜索結果排名,Google建議使用nofollow屬性。
3.引導爬蟲抓取有效的頁面:避免爬蟲抓取一些無意義的頁面,影響爬蟲抓取的效率。 

 

伸手黨福利

使用lightbox圖片放大功能, 在頁腳html處粘貼以下代碼即可:

<!-- lightbox的樣式 -->
<link href="https://blog-static.cnblogs.com/files/yadongliang/lightbox.css" rel="stylesheet">

<!-- lightbox.js核心代碼 -->
<script src="https://blog-static.cnblogs.com/files/yadongliang/lightbox-plus-jquery.js"></script>
<script type='text/javascript'>$('#cnblogs_post_body img').wrap(function(){return "<" + "a href='"+$(this).attr("src")+"' data-lightbox='example-set'></a>"});</script>
<script type='text/javascript'>$(".code_img_closed").unwrap();</script>
<script type='text/javascript'>$(".code_img_opened").unwrap();</script>

 

擴展


免責聲明!

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



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