Greasemonkey可替網頁加入些新功能、修正網頁錯誤、組合來自不同網頁的資料、或者數繁不及備載的其他功能。寫的好的Greasemonkey腳本甚至可讓其輸出與被修改的頁面整合得天衣無縫,像是原本網頁裡的一部分。
jQuery : 一套 javascript library,用在協助做 HTML DOM element 處理。
一般來說使用基本的 js 就可以達到需要實現的功能
但是相對的程式可能就會變得有點複雜或者不方便重複使用
然後在 userscript 內加入 framework 的話又會讓整個 userscript 顯得有點長
在處理簡短的程式碼時就顯得有點浪費
這時候可以考慮使用 xpath 來做處理
但是 xpath 在查詢上的彈性比較死
對於一些多重複雜性的查詢就相對地比較麻煩
另外現今的 js 也比較少在使用 xpath 語法
所以另外有在 userscript 內加入外部的 framework 的作法
在以前的做法
利用產生 script 元素進行設定來載入外部 framework
作法一
var $; // Add jQuery (function(){ if (typeof unsafeWindow.jQuery == 'undefined') { var GM_Head = document.getElementsByTagName('head')[0] || document.documentElement, GM_JQ = document.createElement('script'); GM_JQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; GM_JQ.type = 'text/javascript'; GM_JQ.async = true; GM_Head.insertBefore(GM_JQ, GM_Head.firstChild); } GM_wait(); })();
但是僅僅是如此的話會有一些問題 比如執行程式碼時 如果 jquery 還沒載入的話 就會出錯 這時候可以加上判斷是否已經載入成功的判斷
// Check if jQuery's loaded function GM_wait() { if (typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait, 100); } else { $ = unsafeWindow.jQuery.noConflict(true); letsJQuery(); } } // All your GM code must be inside this function function letsJQuery() { // 這裡加上成功載入後要執行的程式 }
方法二
在新版的 Greasemonkey 0.7 以後的版本 則有更簡單的作法
只需要加上
// @require http://code.jquery.com/jquery-latest.js就可以完成方法一 內所做的事情
不過要注意的是 不要使用被壓縮過的 jquery.min 會由於否些問題造成無法正確載入 jquery