前言
油猴腳本(Tampermonkey)是一個非常流行的瀏覽器擴展,它可以運行由廣大社區編寫的擴展腳本,來實現各式各樣的功能,常見的去廣告、修改樣式文件、甚至是下載視頻。今天我們就來看看如何編寫自己的油猴腳本。當然為了運行油猴腳本,你應該在瀏覽器中安裝油猴插件。
安裝
在chrome / firefox /edge 這些瀏覽器的擴展商店直接搜索 Tampermonkey 即可
腳本編寫方法
功能注釋
首先來看看腳本的內容,在油猴腳本最開始有很多行注釋,這些注釋可以非常有用的,它表明了腳本的各個屬性。下面來簡單介紹一下。
屬性名 | 作用 |
---|---|
@name
|
油猴腳本的名字 |
@namespace | 命名空間,類似於Java的包名,用來區分相同名稱的腳本,一般寫成作者名字或者網址就可以了 |
@version | 腳本版本,油猴腳本的更新會讀取這個版本號 |
@description | 描述,用來告訴用戶這個腳本是干什么用的 |
@author | 作者名字 |
@match | 只有匹配的網址才會執行對應的腳本,例如、http://、http://www.baidu.com/*等,參見谷歌開發者文檔 |
@grant | 指定腳本運行所需權限,如果腳本擁有相應的權限,就可以調用油猴擴展提供的API與瀏覽器進行交互。如果設置為none的話,則不使用沙箱環境,腳本會直接運行在網頁的環境中,這時候無法使用大部分油猴擴展的API。如果不指定的話,油猴會默認添加幾個最常用的API |
@require | 如果腳本依賴其他js庫的話,可以使用require指令,在運行腳本之前先加載其他庫,常見用法是加載jquery |
@connect | 當用戶使用GM_xmlhttpRequest請求遠程數據的時候,需要使用connect指定允許訪問的域名,支持域名、子域名、IP地址以及*通配符 |
@updateURL | 腳本更新網址,當油猴擴展檢查更新的時候,會嘗試從這個網址下載腳本,然后比對版本號確認是否更新 |
@include | 腳本應該運行的頁面。允許多個標簽實例。請注意,@include 不支持 URL 哈希參數。 |
@exclude | 排除 URL,即使它們被 @include 或 @match 包含 。允許多個標簽實例。 |
@run-at | 定義腳本被注入的時刻。// @run-at 【document-start|document-body|document-end|document-idle|context-menu】 |
腳本權限
grant指令那里可以填寫的一些權限,詳情請查看油猴腳本文檔。這里就簡單介紹幾個常用的,可以調用的函數全部以GM_作為開頭。
權限名 | 功能 |
---|---|
unsafeWindow
|
允許腳本可以完整訪問原始頁面,包括原始頁面的腳本和變量。 |
GM_getValue | (name,defaultValue) 從油猴擴展的存儲中訪問數據。可以設置默認值,在沒成功獲取到數據的時候當做初始值。如果保存的是日期等類型的話,取出來的數據會變成文本,需要自己轉換一下。 |
GM_setValue | (name,value) 將數據保存到存儲中 |
GM_xmlhttpRequest | (details) 異步訪問網頁數據的API,這個方法比較復雜,有大量參數和回調,詳情請參考官方文檔。 |
GM_setClipboard | (data, info) 將數據復制到剪貼板中,第一個參數是要復制的數據,第二個參數是MIME類型,用於指定復制的數據類型。 |
GM_log | (message) 將日志打印到控制台中,可以使用F12開發者工具查看。 |
GM_addStyle | (css) 像網頁中添加自己的樣式表。 |
GM_notification | (details, ondone), GM_notification(text, title, image, onclick) 設置網頁通知,請參考文檔獲取用法。 |
GM_openInTab | (url, loadInBackground) 在瀏覽器中打開網頁,可以設置是否在后台打開等幾個選項 |