訪客留言簿

星期三, 8月 01, 2007

Firefox 的方便功能之一 - userChrome.js -

提醒

這篇文章已經沒有在更新了,建議各位看裡面的討論串,再決定要不要用各討論串提供的較新的 js 檔案,或是參考這篇最底下的新增說明

需要觀看下載 Nico 的,可以試試非官方提供的 Nico Video 專用瀏覽器「 BOON SUTAZIO 」,如果你不介意這是使用 IE 核心(Triden排版引擎)的話。目前已經非常好用的 NicoFox 可以試試看哦!

提醒一下,這篇文章內的抓 Nico Video 影片的程式碼已經過期了,也就是說裝好後也不會出現在選單裡面,請改用 BOON SUTAZIO 吧

- userChrome.js -
【本擴充套件亦適用於 SeaMonkey, Pigfoot Firefox, Flock, NetScape 等瀏覽器上】

介紹

這東西可以讓你寫 JavaScript 來加強瀏覽器功能,比如說:

  1. 用中鍵把巴哈哈啦區的超連結直接開在新分頁
  2. 右鍵出現下載 nico 跟 youtube 影片的選項(註:下載的影片請只供個人娛樂使用,勿任意散佈。)
  3. 快按一下中鍵在背景開新分頁、長按則跳焦點到開出的新分頁上

安裝步驟

  1. 安裝 Firefox 瀏覽器。建議先安裝官方版本的 Mozilla Firefox ,再下載社群版本的 Pigfoot Firefox 來用。(對速度不計較的人,裝官方版本就好。)
  2. 安裝 userChrome.js。從 [Ext] userChrome.js - MozillaZine Forums 下載(Download)安裝 userChrome.js 擴充套件(下載後拖拉到 Fx 視窗安裝)。
  3. 重開 Firefox 。裝好後重開 Fx ,讓設定檔資料夾下的 chrome 資料夾建立 userChrome.js 一檔。
  4. 【自選項目】分開不同程式碼檔案。需要將不同用途的 js 分開建檔存放時,請使用在下載頁中提供的 Sub-Script/XUL Loader 。(不需要的請直接寫進 userChrome.js 文件末端就好)
  5. 加裝所需功能。js 使用方式是、把別人給的 js 碼,貼到 userChrome.js 中,存檔後重開 Fx 就好。
  6. 【自選項目】套用分開的程式碼檔案。使用 Sub-Script/XUL Loader 後,會自動抓取 chrome 資料夾下所有的 *.uc.js 檔,所以複製 userChrome.js 來修改檔名跟內容,就可以把不同用途的 js 獨立開來了。

使用範例及說明

Troubleshooting

不能使用時可以做的除錯動作:

  1. 檢查那些 js 檔案的『檔案類型』是不是 JScript 或 JavaScript 。
  2. 檢查那些 js 檔案的『存放路徑』是不是你正在使用中的 Firefox 設定檔位置下的 chrome 資料夾。
  3. 有沒有重開 Firefox 來重新載入那些 js 檔案。
  4. 有沒有把 Sub-Script/XUL Loader 程式碼放在 userChromem.js 檔案中。
  5. 還是不行的,請直接下載我打包好的 js 檔案後,解壓縮在 chrome 資料夾下。(不過要注意一下,裡面沒放下載 YouTube 影片的,個人是推薦用蓋特一號解讀出影片檔案網址,再開續傳軟體抓啦。)

新增說明 (2008.09.22)

我剛發現官網討論串的 HTML 好像有很多失效了,所以在這寫上那裡面的一些程式碼,還有最新的 userChrome.js 討論串。

最新討論串:

[Ext] userChrome.js 0.8 (Posted June 7th, 2007, 5:13 am)

Sub-Script/XUL Loader:


/* :::::::: Sub-Script/XUL Loader ::::::::::::::: */

// automatically includes all files ending in .uc.js and .uc.xul from the profile's chrome folder

(function() {
 var getURLSpecFromFile = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromFile;
 var chromeDir = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("UChrm", Components.interfaces.nsILocalFile);
 var files = chromeDir.directoryEntries.QueryInterface(Components.interfaces.nsISimpleEnumerator);
 var xul_files = [];
 
 while (files.hasMoreElements())
 {
  var file = files.getNext().QueryInterface(Components.interfaces.nsIFile);
  if (/\.uc\.js$/i.test(file.leafName))
  {
   setTimeout(function(aFile) {
    Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader).loadSubScript(getURLSpecFromFile(aFile));
   }, 0, file);
  }
  else if (/(^userChrome|\.uc)\.xul$/i.test(file.leafName))
  {
   xul_files.push(file);
  }
 }
 
 setTimeout(function() {
  if (xul_files.length > 0)
  {
   document.loadOverlay(getURLSpecFromFile(xul_files.shift()), null);
   setTimeout(arguments.callee, 0);
  }
 }, 0);
})();

15 comments:

匿名 提到...

我已經安裝好也找到userChrome.js

我現在不知道要怎麼使用Sub-Script/XUL Loader

以下是我的作法

我先將userChrome.js以記事本開啟

再把Sub-Script/XUL Loader的程式碼貼上,並重開FX

再把

http://blog.libelabo.jp/2007/04/05/nicovideo-download-userchrome-js/

http://d.hatena.ne.jp/fls/20070110/p1

這兩個丟到記事本裡,重新命名

nicoDownloader.uc.js、youtubeDownloader.uc.js

丟到C:\Documents and Settings\*\Application
Data\Mozilla\Firefox\Profiles\wdobh6z4.default\chrome裡

可是沒有用阿囧

請問我哪裡弄錯了

先行感謝你的回應<(_ _)>

wini 提到...

上面的匿名訪客你好。

嗯,照理說, js 檔案不管存成什麼字元編碼都無所謂,因為主要的程式碼部分是英數符號這些東西。

然後你說你用 Windows 記事本處理,而我實驗的結果是,不管 Windows 有沒有調整成顯示副檔名,只要另存新檔時,檔名結尾有打 .js ,就一定會存成有效的 JavaScript 檔案(在 Windows 中是用 JScript 這微軟弄的規格來表示檔案類型就是)。

所以我只能想,會不會是你的 userChrome.js 跟其它的 .uc.js 放錯了地方而已……

總之我懶得猜了,你現在既然已經裝好 userChrome.js 擴充套件的話,那我直接提供那些 js 檔案給你就好了。 XD

下載我打包好的一些 userChrome.js 檔案(內容跟原始提供者的一樣;編碼是 UTF-8 w/o BOM 。)

如果以後還有想用的,但是寫好的檔案一樣沒辦法使用的話,試試看換 MadEdit 編輯器處理,這個是免安裝,也有提供中文介面的切換。

用 MadEdit 開啟 userChrome.js ,然後在工具列選單的「檢視(View)」,把編碼調成「 UTF-8 」方便閱讀 UTF-8 文件,然後「工具(Tool)」選項中的第六個也要調成 UTF-8 ,第三個 Unicode BOM 相關的,也要檢查看看是不是沒有 BOM 的。這樣子應該只要弄好的檔案的「檔名」跟「存放位置」沒弄錯,就一定可以用。(其它設定請在「工具 → 選項」中自行調整)

匿名 提到...

感謝您
NICO順利抓下
之前一直在影片上按右鍵難怪沒用(倒

wini 提到...

啊,原來是那種問題,真的是完全想不到,因為我知道那兒點下去是 flash 選單,所以不會在那點的關係…… Orz

感謝回報,我來修一下文章。

匿名 提到...

不好意思,我照著步驟使用
唯獨nico的影片始終都抓不下來(youtube ok)
使用蓋特一號也沒反應
跟我的帳號是非付費的有關嗎?

謝謝

wini 提到...

上面的 匿名 你好。

你只提出這點資料,我判斷不出來你是在哪裡出問題的哦。 ^^;

要用這功能抓 nico 影片,要先能登入,然後建議等看完影片,檔案放進電影暫存檔中時,再來抓取比較快。然後要抓 nico 影片,記得滑鼠別在影片跟字幕的區域按這樣。

另外,你也要確認,你的帳號是不是二十四小時都可以登入的。不是的話,只能在日本時間早上兩點到晚上七點間登入使用而已(請自行換算時區)。

另外抓 youtube 我是建議用續傳軟體啦,瀏覽器或蓋特一號都不能續傳,而且還得等很久才會開始下這樣。 :(

匿名 提到...

瞭解,果然是需要登入才能抓
這幾天自己網路有問題,修好的時候已經超過六點了orz
沒多加測試就發問,抱歉
wini果然好人,( ′▽`)-o囯囚圃(特級卡)

wini 提到...

XD

總之註冊完等兩個月,沒問題的話,應該就可以二十四小時登入了吧。(官方會在首頁標示開放到幾號這樣)

不過我猜六點前抓完,只要暫存檔的檔案沒清掉,應該還是能抓,只是我沒試過不確定就是。

f.f 提到...

hi wini
請問這些user script的反安裝
是否是只要到chrome的資料夾下
將該js檔刪除即可?
因為現在要下nico的影片
nicofox對我而言是比較好的選擇
我不太喜歡為了做到某件事特地為它裝一個軟體呢…

wini 提到...

> f.f

嗯,沒錯,你知道是哪個 js 檔案的話,砍掉那個就好了。(如果你是下載我弄的那個打包檔的話……話說那個檔也好舊,該砍掉了,不然裡面會有一個在 Fx3 上出問題。)

wini 提到...

另外我印象中,這篇裡面下載 Nico/YouTube 的那些,好像因為 Nico 改版也失效了。

但是只要進附加元件管理,把 userChrome 這擴充停用或砍掉也就好了,沒這擴充套件的話,那些 js 檔案應該是不會運作的。

f.f 提到...

但把這個擴充套件砍掉的話
這樣一來也沒辦法改造網頁了(哭哭
wini下次來寫篇user script的教學吧?

wini 提到...

> f.f

改造網頁的好像是 userChrome.css 或是 Stylish 跟 Greasemonkey 的東西,你如果砍錯的話……嗯,建議你開副檔名顯示確認一下啦,我不太確定你說的是什麼,可是我這邊寫的教學是有不必動 userChrome.js 檔案的方法,就是在 userChrome.js 寫「Sub-Script/XUL Loader」,把不同用途的 js 檔案分開放那招。

然後 JavaScript 我不熟,寫不出可以改變操作習慣或改造網頁內容的東西,你還是上 MozTW 問人看看比較好。

(有開副檔名顯示的話,把 js 檔的副檔名尾巴加些字,「Sub-Script/XUL Loader」這個寫在 userChrome.js 中的玩意就不會去讀那些改過副檔名的舊 js 檔了。)

wini 提到...

我重新整理一下停掉 userChrome.js 擴充套件的方法:

一、停用 userChrome.js (會把所有的 chrome 資料夾下的 js 也停用)

二、有使用「Sub-Script/XUL Loader」時:
 1、砍掉知道用途的個別 js 檔(如果你有把不同用途的 JavaScript 建立成獨立檔案的話)
 2、把個別 js 檔的副檔名增改些字,讓「Sub-Script/XUL Loader」不會去讀取。(印象中只會讀取副檔名完全吻合「js」兩字的檔案,所以副檔名不同時就會忽略。)

wini 提到...

更正一下,會讀的是「.uc.js」結尾的檔案。

然後原始討論串的「Sub-Script/XUL Loader」我複製過來了

 

本站著作(不包含圖片、影音以及回應留言)係採用 Creative Commons 姓名標示-非商業性-相同方式分享 2.5 台灣 (中華民國) 授權條款授權