時(shí)代變化真快,Netscape->IE->Firefox & Opera -> Safari & Chrome,依然記得自己擁有的第一臺(tái)Toshiba筆記本電腦,從拿到電腦開(kāi)始到自己背著自己的電腦遠(yuǎn)赴日不落帝國(guó)見(jiàn)學(xué)之間的大半年,開(kāi)機(jī)無(wú)非Red alert,Starcraft,以及各種國(guó)產(chǎn)RPG。無(wú)論如何,這時(shí)的自己卻從來(lái)未考慮過(guò)是否有工具可以通過(guò)這樣的一個(gè)盒子來(lái)交流,也從來(lái)沒(méi)有考慮過(guò)用這樣的一個(gè)盒子來(lái)傳達(dá)自己的想法,亦或接受時(shí)代的潮流。直到自己來(lái)到日不落的第一天,電腦課,老師教我們打開(kāi)了第一個(gè)網(wǎng)站Google,試著用拼音拼出了zhong guo,我來(lái)到了當(dāng)時(shí)自己上得最多的一個(gè)站點(diǎn)——Sina,隨著自己點(diǎn)開(kāi)Sina的一刻,我明白了,自己該要啟程了。(大霧,被拖走 跑題了。先簡(jiǎn)單解釋一下什么是Userscript: 頁(yè)面執(zhí)行的一些功能,多數(shù)是通過(guò)Javascript和Flash來(lái)實(shí)現(xiàn)的。Userscript則是用戶端所執(zhí)行的功能函數(shù)。 所以最簡(jiǎn)單地說(shuō)什么是Userscript: 我覺(jué)得這個(gè)網(wǎng)站設(shè)計(jì)的很不爽,我要讓其人性化一些。于是,就有了各種tweet站點(diǎn)功能的腳本。其中Userscript則是用戶腳本的一個(gè)集中托管站點(diǎn),瀏覽器插件所能實(shí)現(xiàn)的大多數(shù)功能其實(shí)多數(shù)也可以通過(guò)油猴腳本實(shí)現(xiàn)。而且通過(guò)油猴實(shí)現(xiàn)有一個(gè)很大的優(yōu)點(diǎn),就是不用過(guò)分介意瀏覽器的升級(jí),并且擁有一定的可移植的可能。當(dāng)然也有很大的局限性,其中包括但不限于Tab管理,ContextMenu Change等等。不過(guò)不管怎么說(shuō),通過(guò)Userscript,我們可以實(shí)現(xiàn)很多站點(diǎn)默認(rèn)不能實(shí)現(xiàn)或者不愿意實(shí)現(xiàn)的功能來(lái)簡(jiǎn)化我們?nèi)粘5牟僮鳌?/p> 當(dāng)然,Userscript的實(shí)現(xiàn)方式的區(qū)別也帶來(lái)了這樣的些缺點(diǎn)——不同瀏覽器之間對(duì)GM函數(shù)的支持有所不同。 于是,這里僅就最單純的東西進(jìn)行一些介紹好了。 首先 Firefox:1:GreasemonkeyFirefox應(yīng)該是最早應(yīng)用userscript的瀏覽器了(個(gè)人所知),其中Greasemonkey更是創(chuàng)造了userscript開(kāi)發(fā)的奇跡,其強(qiáng)大的功能以及逐漸優(yōu)化到如今所有的沙箱化操作都稱為了如今開(kāi)發(fā)userscrip支持插件的標(biāo)準(zhǔn) 2 : Scriptish這個(gè)我也沒(méi)用過(guò),不過(guò)因?yàn)樵黾恿薝pdate和很多便于開(kāi)發(fā)者利用的API,而Greasemonkey也因?yàn)橼呌诜€(wěn)定長(zhǎng)時(shí)間未更新,所以愿意嘗新的童鞋的可以用這個(gè)來(lái)代替Greasemonkey(也有點(diǎn)比較奇葩的bug)
安裝方法: 打開(kāi)Firefox 工具(Tools)->插件管理(Add-ons)->獲取插件(Get-Addons)->上面搜索欄輸入Greasemonkey或Scriptish->Install 然后在這里搜索Greasemonkey或者scriptish就可以了,安裝Install后可以下載user.js用戶腳本后拖入瀏覽器則可自動(dòng)安裝。 Chrome:Chrome可以說(shuō)在Userscript上確實(shí)是度過(guò)了一段比較坑爹的時(shí)期,主要原因就是Google這家“不作惡”的公司在做很多用戶產(chǎn)品的時(shí)候都做了一些很坑爹的不合理的設(shè)定,比如Userscript。 從Chrome剛出的時(shí)候就聽(tīng)說(shuō)Chrome原生支持Userscript,當(dāng)時(shí)聽(tīng)說(shuō)了這個(gè)消息還很興奮,當(dāng)用的第一天就發(fā)現(xiàn),自己著著實(shí)實(shí)被套牢了。無(wú)沙箱支持,無(wú)跨域請(qǐng)求支持,于是留下的,就是一具空殼... 后面陸續(xù)作出的插件就解決了這些問(wèn)題。包括(Blank Canvas Script Handler,Tampermonkey,Ninjakit) 這里只介紹和推薦Tampermonkey(其他的我沒(méi)用過(guò)不熟)。主要原因就是Tampermonkey的現(xiàn)任維護(hù)者就是Greasemonkey的開(kāi)發(fā)者,雖然在兼容性還存在一定問(wèn)題(機(jī)制上的問(wèn)題),不過(guò)多數(shù)情況都可以通過(guò)比較簡(jiǎn)單的Tweak來(lái)實(shí)現(xiàn)兼容的。 安裝方法: 打開(kāi)Chrome->打開(kāi)地址->左側(cè)地址欄輸入Tampermonkey->點(diǎn)擊Install
Opera:Opera是除了Chrome以外另外一個(gè)讓人感覺(jué)很坑爹的瀏覽器,和Chrome一樣,原生支持userscript,可惜直到現(xiàn)在,都沒(méi)有找到Opera的userscript實(shí)現(xiàn)沙箱的方法,不過(guò)卻在Opera 9升級(jí)后通過(guò)對(duì)userscript的執(zhí)行機(jī)制的修改實(shí)現(xiàn)了跨域的可能。雖然如此,Opera還是一定程度上能夠兼容多數(shù)GM腳本的,不過(guò)部分GM函數(shù)和Meta則無(wú)法支持,會(huì)帶來(lái)一定的兼容性問(wèn)題。 安裝方法: 打開(kāi)Opera后點(diǎn)擊設(shè)置(Preference) 然后如圖設(shè)置:
點(diǎn)擊Javascript Options(Javascript選項(xiàng))后,在Userscript Folder那里輸入你存放用戶腳本的實(shí)際目錄(比如D:\Opera\USERJS),目錄存放位置可以隨意定義。初步設(shè)置完成。 這里需要解決跨域和HTTPS下USERJS的使用問(wèn)題:在地址欄輸入about:config里修改如下項(xiàng)目: 修改JS Storage的空間上限,實(shí)現(xiàn)跨域需要。 HTTPS頁(yè)面也使用UERSCRIPT 當(dāng)然實(shí)現(xiàn)GM函數(shù)和跨域需要下載一些前置腳本來(lái)實(shí)現(xiàn),這里放上自己的,如果對(duì)偶不信任的童鞋可以爬帖自炊,這里提供一份mediafire的自己用的前置腳本的分流。 a.對(duì)偶信任的可以直接下回來(lái)解壓后扔進(jìn)自己的userscript腳本目錄b.不信任的童鞋GM_emulation腳本以及跨域請(qǐng)求腳本請(qǐng)參閱: 便于尋找留一份原作者分流 下載回來(lái)之后放進(jìn)Opera的Userscript文件夾里,同時(shí)將http:///scripts/show/88932拉回來(lái)的腳本改名為aab-greasemonkey-emulation.user.js 準(zhǔn)備工作完成。
P.S.Userjs在Opera上的運(yùn)行慢的很....可能頁(yè)面出來(lái)要5-10s才能加載完成,所以調(diào)試的時(shí)候經(jīng)常是否出錯(cuò)了自己都不知道。 SafariSafari上的Userscript發(fā)展史也異常糾結(jié),在Safari支持插件之前只能通過(guò)SIMBL和GreaseKit實(shí)現(xiàn),雖然可以解決一些問(wèn)題,不過(guò)跨域和沙箱的問(wèn)題一直都沒(méi)有得到解決。直到Extension的出現(xiàn),Safari才出現(xiàn)了一個(gè)像樣的插件,即——Ninjakit。安轉(zhuǎn)前需開(kāi)啟Extension支持。 開(kāi)啟Extension 需要安裝的童鞋可以直接去作者的官方頁(yè)面下載,下載地址,不過(guò)自己卻不推薦直接用作者的這個(gè)版本,因?yàn)槔锩婵缬蛘?qǐng)求的代碼部分有一些小問(wèn)題,自己做的一些小fix,已經(jīng)提交了作者但是還未回應(yīng),于是如果信任偶的童鞋可以直接用偶自己打包好的版本。 當(dāng)然,不信任的童鞋暫時(shí)偶也沒(méi)什么好辦法,只能等原作者更新了。偶修改的部分: 1:GM_xmlhttprequest的請(qǐng)求頭未裝載 2:GM_xmlhttprequest非async請(qǐng)求,無(wú)法追蹤status。 3: unsafeWindow支持 而且因?yàn)镾afari的Extension的執(zhí)行是完全沙箱化的,所以,暫時(shí)沒(méi)找到辦法訪問(wèn)unsafeWindow,這個(gè)應(yīng)該會(huì)有其他的trick能夠解決,所以在兼容性上是會(huì)有一定問(wèn)題的。不過(guò)多數(shù)腳本試驗(yàn)后還是可以正常運(yùn)行的。
IE等其他瀏覽器:這一點(diǎn)只能暫時(shí)說(shuō)抱歉了,早期的IE5和IE6還是有GM支持的,非常局限的一些功能,如今的IE因?yàn)橐恍┍娝苤脑蛑饾u被眾開(kāi)發(fā)者所拋棄,這里只能期待從IE9開(kāi)始逐漸開(kāi)始非主流的微軟能夠重新振奮一下開(kāi)發(fā)者,為開(kāi)發(fā)者提供一個(gè)相對(duì)Identical的平臺(tái)來(lái)實(shí)現(xiàn)作業(yè)了。 至于如360瀏覽器,世界窗瀏覽器之類的,我不熟悉,或許有其他達(dá)人有使用經(jīng)驗(yàn)的,歡迎提議拍磚,自己也會(huì)陸續(xù)更新。 上腳本安裝方法:支持的瀏覽器在安裝完各自的GM插件后,進(jìn)入想下載的userscript托管頁(yè)面,然后點(diǎn)擊Install即可。如ThunderAssistant |
|