Menu

強大的自訂網頁腳本工具:Greasemonkey (Firefox 外掛)

1.1. Greasemonkey是什麼?

Greasemonkey 是一個 Firefox 外掛,它有通過編寫腳本來改變被訪問網頁的功能。使用它,能使您訪問的網站更便於閱讀或者更便於使用。使用它,您能修復網頁渲染的缺陷,而無須煩擾網站管 理員。使用它,您能讓網頁更好地使用殘疾人援助技術,清楚響亮地說出網頁內容,或者將網頁內容變為盲文。使用它,您能自動地獲得其它網站的數據,從而使兩 個網站更好地相互鏈接起來。

然而 Greasemonkey 本身並沒有作這些事。實際上,在您安裝它之後,您注意到根本沒有任何變動...直到您開始安裝一種叫做「用戶腳本」的東西。用戶腳本(user script)就是一大塊 Javascript 代碼,還有些附加信息,用來告訴 Greasemonkey 腳本應該在何時何地運行。每個用戶腳本能夠針對具體頁面,具體網站,或者一批網站。用戶腳本能做到您在 Javascript 中可做到的任何事情。實際上,它能做得更多,因為 Greasemonkey 提供了專供用戶腳本使用的函數。

Greasemonkey 腳本庫 (http://dunck.us/collab/GreaseMonkeyUserScripts)包含了上百個用戶腳本,這些都是用戶為了滿足自己的 需要而寫的。一旦您寫了自己的用戶腳本,只要您認為別人也許發現它有用,您可以把它添加到腳本庫中。您也可以自己使用,因為從編寫過程中獲得知識,獲得滿 足感,才是更重要的。

這是Greasemonkey的郵件列表 (http://greasemonkey.mozdev.org/list.html),您可以在那裡提問,發表用戶腳本,和討論新特性的想法。 Greasemonkey 開發人員常去這個郵件列表; 他們也許甚而回答您的問題!


為什麼寫這本書?

Dive Into Greasemonkey 是從 Greasemonkey 郵件列表中的用戶討論和作者本人編寫用戶腳本的經驗中發展而來。僅僅一個星期,作者就發現,新用戶經常會提出重複的問題,而這些問題是被回答過的。此外, 在寫了幾個用戶腳本以後,作者發現,一些常用的模式,以及可以解決某一類問題的成塊的可重用代碼會反覆出現。因此,作者開始整理這些有用的模式,解釋編程 思路,同時作者也從中獲益。

如果沒有 Greasemonkey 的開發者 Aaron Boodman 和 Jeremy Dunck 的大力幫助,沒有那些對我的初稿提出寶貴的反饋建議的用戶,就不會有現在的這本書。在這裡對他們表示衷心的感謝。


1.2. 安裝 Greasemonkey

要寫用戶腳本,您需要先會安裝0.3或以上版本的 Greasemonkey 外掛。


步驟: 安裝 Greasemonkey 外掛


1. 訪問Greasemonkey的主頁 (http://greasemonkey.mozdev.org/)

2. 點擊名為「Install Greasemonkey」(註:英文主頁)的鏈接

3. Firefox會顯示(可能在瀏覽器窗口的上方)它阻止網站安裝軟件的信息。點擊編輯選項...打開"允許的站點"對話框,然後點擊允許,將 Greasemonkey 的網站添加到允許安裝軟件的網站列表中。單擊確定關閉「允許的站點」對話框

4. 再次點擊名為「Install Greasemonkey」的鏈接

5. 現在將彈出安裝對話框,確定您真的要安裝。等幾秒鐘,安裝按鈕變亮,再點擊安裝

6. 重新啟動您的瀏覽器


一 旦您重新啟動了瀏覽器,選擇工具(T)菜單。您應該看到三個菜單項:Install User Script..., Manage User Scripts..., 和 User Script Commands。 只要 Manage User Scripts... 可以使用,那麼就裝好了。其他的兩個要在特殊的情況才能使用。


一般來說,安裝好 Greasemonkey,(除了三個菜單項外)並不會給瀏覽器添加任何功能。它能讓您添加另外的東西,名叫「用戶腳本」(user script),它可以用來定製指定的網頁。


1.3. 安裝用戶腳本

一個 Greasemonkey 的「用戶腳本(user script)」就是一個用Javascript編寫的文件,您可以設置在一個或多個網頁上執行安裝的用戶腳本。


您 可以在Greasemonkey script repository (http://dunck.us/collab/GreaseMonkeyUserScripts)(Greasemonkey腳本庫,英文網站)找到 許多用戶腳本。儘管沒人要求您必須把您的腳本放到那兒去,實際上,您可以把您的腳本共享到任何地方,這樣其他人就可以安裝它了。您甚至不需要一台網絡服務 器;因為你可以從本地文件中安裝用戶腳本。


用戶腳本的文件名必須以 .user.js 結尾。

我(原作者)寫的第一個用戶腳本叫做 「Butler」。它增強了Google的搜索結果的功能。


步驟: 安裝 Butler 用戶腳本


✪ 怎樣安裝用戶腳本 (http://diveintogreasemonkey.org/videos/install-user-script.html)。


1. 訪問 Butler (http://diveintomark.org/projects/butler/) 的主頁,將看到有關 Butler 的功能的簡要概述。(並不是所有的用戶腳本都有主頁; Greasemonkey 只關心用戶腳本本身。)

2. 點擊「Download version...」 鏈接,然後您會在瀏覽器中看到這個用戶腳本中的內容,有好幾頁長。

3. 打開 工具 菜單,Install User Script... 這個菜單項應該可以用了,就點它。

4. 彈出標題為「Install User Script」的對話框,其中顯示了將要安裝的用戶腳本名稱,簡介以及作用與排除的頁面列表。所有這些信息都包含在腳本之中;以後您會學到如何在腳本中用元數據(metadata)來定義它們。

5. 點擊 確定,完成安裝。


沒 有意外的話,Greasemonkey 會彈出一個提示窗口,寫到「Success! Refresh page to see changes.」(安裝成功!刷新頁面以查看頁面變化,) (譯者註:在0.6.3中取消了提示窗口,改為了狀態欄提示,所以安裝時請注意狀態欄)


現 在,您可以在Google中任意搜索一些東西。在搜索結果頁面的頂部會有一行顯示「Try your search on: Yahoo, Ask Jeeves, AlltheWeb, ...」。在其下面會有一個標籤顯示「Enhanced by Butler」。所有這些東西都是由 Butler 用戶腳本添加進去的。


1.4. 管理您的用戶腳本

如果您喜歡您能安裝許多個 Greasemonkey 腳本。 Greasemonkey 有圖解配置對話框處理您的用戶腳本: 暫時禁用, 改變他們的配置, 或完全地卸載。


步驟: 暫時禁用 Butler


✪ 怎樣禁用 user script (http://diveintogreasemonkey.org/videos/disable-user-script.html)


1. 從菜單開始,選擇 工具 → Manage User Scripts... Greasemonkey 會彈出一個對話框,其標題為「Manage User Scripts」。

(譯者註:由於Greasemonkey暫時沒有中文版,所以Greasemonkey的界面術語暫不翻譯。)

(另一譯者註:現在Mozilla Update已經有中文版Greasemonkey (http://mozillaupdate.mozine.org/extensions/moreinfo.php?id=16),後面的我真不知道該不該翻譯成中文...)

2. 在對話框左邊的方框是您安裝的所有 user script 的列表。(如果您從頭到尾按照步驟來的話,這裡應該只有一個腳本: Butler)

3. 選中列表中的 Butler 然後取消 Enable 複選框。左邊列表中的"Butler"就會由黑色轉為灰色。(這樣當它選中的時候,就會看起來比較費勁,但是當您安裝了很多腳本時就非常有用了。)

4. 點擊 確定 退出「Manage User Scripts」 對話框

 

現 在 Butler 已經安裝,但是未被啟用。您在Google上隨便搜索下就會發現確實如此。在頁面頂端的「Enhanced by Butler」 應該沒有了。您可以「Manage User Scripts」對話框中重複剛才的步驟,重新選擇 Butler 重新選擇 Enabled 複選框。

注意

雖然我用暫時(「temporary」)來形容禁用 user script 的動作,但是如果您不重新啟用它,它就始終被禁用。之所以是暫時,只因為您可以方便的啟用它而不需要再到我的網站上來找原始腳本,而且還要重新安裝。


您完全可以用「Manage User Scripts」對話框來卸載腳本。


步驟: 卸載 Butler


✪ 怎樣卸載 user script (http://diveintogreasemonkey.org/videos/uninstall-user-script.html).


1. 在菜單中,選擇 工具 → Manage User Scripts.... Greasemonkey 又會彈出「Manage User Scripts」 對話框。

2. 在左邊的方框中,選擇 Butler 點擊 Uninstall。不需要確認,這個 user script 馬上就被卸載掉了。

3. 第三步... 沒有第三步! (With apologies to Jeff Goldblum.)

 

先 等一下,還沒完呢!您也可以修改您之前安裝過的用戶腳本的配置。記得您第一次安裝Butler時看到的對話框 (http://diveintogreasemonkey.org/install/userscript.html)嗎,就是那個有兩個「包含的網站 」和「排除的網站」(sites to include and exclude)列表的?您可以在「管理用戶腳本(Manage User Scripts)」對話框中自己修改那些列表,不管是第一次安裝時還是在其它什麼時候。

(譯者註:這兩個列表其實就是腳本的執行清單和豁免清單,支持用通配符表示網址。)


讓 我們繼續,例如,您認為 Butler 不錯,但是覺得它在Froogle (http://froogle.google.com/)(Google's product comparison site)上毫無用處。那麼,您就可以修改用戶腳本配置來排除這個網站,而讓它在其它Google網站上仍然起作用。


步驟:重新配置 Butler 以排除 Froogle


✪ 怎樣修改user script配置 (http://diveintogreasemonkey.org/videos/exclude-pages.html).


1. 在菜單中, 選擇 工具 → Manage User Scripts.... ,Greasemonkey會彈出「Manage User Scripts」對話框。

2. 在對話框左邊的面板中, 選擇 「Butler」. 接著在右邊的面板中就會顯示兩個列表,一個是Included pages(「http://*.google.*/*」),另一個是Excluded pages(blank)。

3. 在「Excluded pages」 列表那裡點擊「Add....」

4. Greasemonkey會彈出另一個標題為「Add Page」的對話框提示你輸入網址。在其中輸入http://froogle.google.com/*然後點 OK。

5. 在「Manage User Scripts」 的對話框中, 「excluded pages list」現在就會有您新添加的地址, http://froogle.google.com/*, 「*」表示這個腳本不會在 froogle.google.com 站點的任何頁面上執行. 「*」被用做為一個通配符,您可以在 URL: 域名/路徑中的任何位置使用它,甚至在(http://)中.

6. 點 OK 退出「Manage User Scripts」 對話框。在 「Froogle」中搜索某個字段,確認「Butler」不會被執行。但是,它仍然會在普通搜索、圖片搜索的結果中,以及google站點的其他頁面中執行。



更多請訪問:
http://wiki.mozcn.org/index.php/Firefox:Di...to_Greasemonkey (http://wiki.mozcn.org/index.php/Firefox:Di...to_Greasemonkey)

若外掛是比較新的(我這裡是0.7.2008***),則已經提供對中文腳本的支持,可以跳過下面的內容。

這裡有一個修改了的greasemonkey0.6.4外掛(修復了GM菜單、增加對中文註釋的支持):

一個fishbone版主代為修改的greasemonkey0.6.5外掛(修復了GM菜單、增加對中文註釋的支持):

修改的greasemonkey0.6.6外掛(增加了對中文腳本的支持):
【當時沒在FX1.5測試過,後來試了一下,發現用戶腳本命令裡的菜單還會重複(刷新時),建議FX1.5的裝下面1103的修改版】

修改的greasemonkey0.6.6外掛(增加了對中文腳本的支持,修復用戶腳本命令裡的菜單重複現象):

修改的greasemonkey0.6.7外掛(增加了對中文腳本的支持,修復用戶腳本命令裡的菜單重複現象):