趁着2018年還剩最後幾天,發幾篇博客,荒廢過久了,慚愧。php
最近也是需求驅動,研究了下Chrome插件開發。來看一下咱們公司運維提供的日誌查看頁面css
全部項目的日誌都參雜在一塊兒,每次去找都很痛苦。慢慢發現這些日誌的名稱都有個規律:項目名-日期-後綴,因而想美化下這個頁面,可是服務端還動不了,只能在瀏覽器端想辦法。前端
Chrome插件能夠本地渲染頁面,是個很是不錯的選擇,直接來看下完成的效果 jquery
按照「項目名」和「日期」分類了,這樣便於查看。同時頁面也美化了,不只實用並且賞心悅目。git
Chrome插件開發對環境要求極低,有一個最基本的前端開發IDE就能夠了,先新建一個必須的文件:manifest.jsongithub
{ "name": "WebFileFilter", "version": "1.0.0", "description": "fast sort your webpage files", "icons": { "16": "images/icon_16px.png", "48": "images/icon_48px.png", "128": "images/icon_128px.png" }, "browser_action": { "default_icon": "images/icon_16px.png", "default_title": "WebFileFilter" }, "content_scripts": [ { "matches": [ "http://115.28.113.150:55000/log/" ], "js": [ "js/content_scripts_list.js" ], "run_at": "document_start" } ], "manifest_version": 2 }
其餘屬性很少說了,看看就明白。說說「content_scripts」下的「matches」節點,這個裏面就是要注入js的URL地址,而「content_scripts_list.js」就是要注入的js,在「content_scripts_list.js」寫一行測試代碼web
console.log("hello world!");
看一下項目結構chrome
一個最基本的Chrome插件就完成了,去安裝一下:打開Chrome瀏覽器 - 更多工具 - 擴展程序,打開「開發者模式」 - 加載已解壓的擴展程序 - 選擇src目錄 - 肯定。再刷新下頁面,看看效果json
能夠看到「content_scripts_list.js」已經注入這個頁面了bootstrap
能夠向這個頁面注入js,固然也能夠向這個頁面注入css
{ "name": "WebFileFilter", "version": "1.0.6", "description": "fast sort your webpage files", "icons": { "16": "images/icon_16px.png", "48": "images/icon_48px.png", "128": "images/icon_128px.png" }, "browser_action": { "default_icon": "images/icon_16px.png", "default_title": "WebFileFilter" }, "content_scripts": [ { "matches": [ "http://115.28.113.150:55000/log/" ], "css": [ "css/bootstrap.min.css" ], "js": [ "js/jquery.min.js", "js/bootstrap.min.js", "js/content_scripts_list.js" ], "run_at": "document_start" } ], "manifest_version": 2 }
jQuery和Bootstrap都注入進來了,那就能夠隨意渲染頁面了。這回「content_scripts_list.js」就不輸出「hello world」了,要去獲取頁面原有的數據綁定到bootstrap插件上,而後去覆蓋頁面原來的內容,具體實現看文章結尾的源碼連接。
注:「run_at」設置成「document_start」表示在原頁面加載以前就注入css和js。若是不這麼設置,訪問頁面的時候,原頁面刷的一下過去再顯示美化後的頁面,體驗較差。
同時「content_scripts_list.js」裏面全部的js都須要寫在document的DOMContentLoaded事件裏面,不然也是達不到效果的
document.addEventListener('DOMContentLoaded', function () { //your js... });
本文以美化日誌頁面爲例,其實適用於全部web服務器輸出的文件列表頁面。最近上網發現這個頁面
文件名徹底符合這樣的格式:分類A-分類B-分類C,因而代碼都不用改,直接把這個URL地址(https://jiacrontab.iwannay.cn/download/)配置到content_scripts下的matches節點,來看下美化後的效果
Chrome插件本地源碼路徑,方便學習其餘優秀插件的代碼:
1)windows xp:C:\Documents and Settings\用戶名\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions
2)windows xp+:C:\Users\用戶名\AppData\Local\Google\Chrome\User Data\Default\Extensions
3)MAC:~/Library/Application Support/Google/Chrome/Default/Extensions
4)Ubuntu:~/.config/google-chrome/Default/Extensions
Chrome插件開發有不少的api,功能很是強大。這裏僅拋磚引玉,更多使用場景你們本身去發揮。源碼地址 Chrome商店 開發文檔