現在の位置
これは何? 編集
JavaScriptを通して、Firefoxのインターフェイスを簡単に改造するための拡張です。
操作周りに関する単機能の拡張は、かなりの部分この拡張でまかなえてしまうが、あえてスクリプトに置き換える必要はない。
使い方 編集
インストール 編集
- 拡張機能userChrome.jsを本体および開発元
からインストール。 - Firefoxを再起動。
- プロファイルフォルダ
の中のchromeフォルダにuserChrome.jsというファイルができる。 - 複数のスクリプトを起動できるように, 次節関連サイトに挙げているサブスクリプトローダのいずれかを,サブスクリプトローダ
からダウンロードしプロファイルフォルダ
の中のchromeフォルダ内にuserChrome.jsという名前で上書きする。 - 必要に応じて, windowhook.uc.jsもWindowHook(メインウインドウ以外に読む込むときに併用)
からダウンロードし,プロファイルフォルダ
の中のchromeフォルダ内に保存する。ファイル名を000-windowhook.uc.jsのように変更し, できるだけ最初に実行されるようにする。 - 種々のスクリプトをダウンロードし,プロファイルフォルダ
の中のchromeフォルダ内に保存する。 - Firefoxを再起動するとスクリプトを読み込みFxに機能が追加/変更される。
注)上記ステップの2および3は省略できる。
- 解説
拡張機能userChrome.jsはプロファイルフォルダ
の中のchromeフォルダにuserChrome.jsという名前の JavaScriptファイルを置くと、それを起動時に読み込んでFirefoxの操作周りを変更します。次節関連サイトに挙げているサブスクリプトローダ
をuserChrome.jsというファイル名でプロファイルフォルダ
の中のchromeフォルダに置くことで、同フォルダ内の *.uc.jsファイル(example.uc.jsといったように)や *.uc.xulファイル(または*.xulファイル)を自動で全て読み込むようになります。
使用する上での留意点 編集
セキュリテイ 編集
userChrome.js用スクリプトは, 拡張機能と同じchrome権限(Firefox本体の機能を変更することのできる権限) を持って実行される。 悪意のあるスクリプトをインストールすると, PCのファイルやパスワードを含む個人情報が危険にさらされるということである。(悪意が無くても, バグや潜在的なセキュリテイホールがある場合もある)
現状(H19.9現在)では上記セキュリテイ問題を回避できる手段はない。インストールしないことが唯一の回避手段である。
userChrome.js用スクリプトは, 信頼できる配布元から入手し, そのスクリプトがどのような動作をするものか理解した上で利用する必要がある。
userChrome.js用スクリプトは, 可能ならソースコードを読み, 外部WebサイトやPCのファイルI/Oへのアクセスの有無を確認してから利用する必要がある。
運用・管理 編集
userChrome.js用スクリプトには, 拡張機能のようにスクリプトの自動更新機能や, Firefox本体のバージョンとの互換性チェック機能などはない。
userChrome.js用スクリプトのインストール, その後の運用は全てユーザ自身が管理する必要がある。
不具合が生じた場合は, どのスクリプトに問題があるのか自分で切り分けられる程度の技能が必要である。
不具合はスクリプトの作者が対応しない限り, 自己で解決する必要がある。
その他 編集
スクリプトの内容をある程度理解し, 自分でスクリプトを書くことができるようになると, あなたのFirefoxの世界が広がることでしょう。
Firefox本体や拡張機能NoScript(類似拡張含む)の設定 編集
* UCJS Loaderと拡張機能NoScript(類似拡張含む)を併用している場合は file:// のJavaScriptを許可する必要がある。
スクリプトの文字コード 編集
* 関連する全てのファイルは, 日本語を含む場合はUTF-8
(文字コードがUTF-8でBOMなし)で保存する必要がある。
スクリプトの形式(Greasemonky様メタデータの形式) 編集
userChrome.jsバージョン0.8用サブスクリプトローダ対応のスクリプトは,Greasemonky様メタデータを読み込み, そのスクリプトを適用すべきchromeウインドウを判断するようになっている。
Greasemonky様メタデータの形式は,以下の通りである。
※※.uc.js 編集
オプションウインドウに適用するスクリプトの例を以下に示す。 Code:
// ==UserScript==
// @name Test
// @namespace http://pile0nades.wordpress.com/
// @description Test script, pops an alert in the Options window.
// @include chrome://browser/content/preferences/preferences.xul
// ==/UserScript==
alert("Hello from the Firefox Options!");
※※.uc.xul 編集
メインウインドウに適用するスクリプトの例を以下に示す。
<?xml version="1.0"?>
<!DOCTYPE overlay>
<!--
// ==UserScript==
// @name Test XUL
// @namespace http://pile0nades.wordpress.com/
// @description Test.
// @include main
// ==/UserScript==
-->
<script type="application/x-javascript" xmlns="http://www.w3.org/1999/xhtml"><![CDATA[
alert("Hello from the Firefox!");
]]></script>
</overlay>
ここに ,"main"はメインブラウザウインドウの省略形
エラーコンソールへのエラーを表示させる方法 編集
XULやスクリプトのエラーを表示させるには, 以下の通りpreferenceを設定しておく。
user_pref("javascript.options.strict", true);
user_pref("javascript.options.showInConsole", true);
関連サイト 編集
本体および開発元 編集
サブスクリプトローダ 編集
userChrome.jsバージョン0.8用 編集
以下に示すものは何れもuc.js, uc.xulおよびGMのメタデータ仕様に対応している。
- Sub-Script/Overlay Loader v3.0
(Thunderbirdでは@includeにmainは使えない) - Sub-Script/Overlay Loader v3.0.25mod
alice0775のサブスクリプトローダ
(Fx3のサイドバーに対応, UCJS Loaderの機能内蔵, Thunderbird2対応) - ローダ0.63
(タイミング的にシビアなので現時点ではお勧めしない)
スクリプトを作成・配布しているサイト 編集
MozillaZine内userChrome.js スレ
編集
- Code Samples
- WindowHook(メインウインドウ以外に読む込むときに併用)

- importScript function (loads a script from a given local path)
- Sub-Script Loader (automatically includes all scripts ending in .uc.js and .uc.xul from the profile's chrome folder - this allows you to keep your code snippets somewhat ordered)
- WindowHook (allows to target all windows / not only the main window)
- Tools menu entry to edit userChrome.js
- Tools menu entry to open the chrome folder
- Tabs to the Right (Tabs Open Relative light)
- Drag'n'go (Super DragAndGo without UI)
- 「URLや選択文字列を下にドラッグしたときにバックグラウンドの新規タブで開く」
80行目あたりで
contentAreaDNDObserver.onDragStart = function(aEvent, aXferData, aDragAction) { this.ucjs_dng_startY = aEvent.screenY;//←追加 var target = aEvent.originalTarget;とかやって
62行目を
if ((this.ucjs_dng_startY < aEvent.screenY) != !(aEvent && aEvent.shiftKey))
にする
- 「URLや選択文字列を下にドラッグしたときにバックグラウンドの新規タブで開く」
- LaunchIE (IEView without UI)
- Customize address completion for [Shift]+[Enter]
- Undo Close Tab tab context menu item (requires Crash Recovery)
- Tab History for the context menu (requires Unified Back-/Forward Button)
- Further snippets for Firefox 2.0
- WindowHook(メインウインドウ以外に読む込むときに併用)
- Sample scripts
- Adds a menuitem on Tools menu
- Adds a menuitem on context menu
- Adds a toolbarbutton
- Adds "Edit userChrome.js" and "Edit userChrome.xul" on MR Tech Local Install's Edit Config button menu (last updated: 2006-05-24)
- Shows the Bookmarks tooltips and Sidebar tooltips
- Content Disposition

- Patch for bug 327604

- truncfix

- Adds 'Edit userChrome.js' on MR Tech Local Install's Edit Config button menu

- Update Edge Tab Attributes

- View Source in Tab

- Delicious Delicacies

- viewSelectionSourceInTab.uc.js

- Ctrl+9 selects last tab

- Manage Bookmarks Folders

- dragandgo.js

- ToolbarConfig

- DisableBackspaceNavigation

- viewLinkSource.xul

- findbarontop.uc.js

- userChrome.xul

- changevaluesonhixiedatauripage.user.js

- Move findbar to top on View Source window

- ManageBookmarksFolders.xul

- Thunderbird 用
- Search Toolbar Item
- Disabled Throbber
- Select Inbox on Startup
- No New Window on Double Click
- pmail.xul

- Clear Data(SeaMonkey 用)

- Make some labels like IE

- Auto clear searchbar after submit, Auto show context menu upon selecting

- Context menu for Home button

- Image Sender

- Element Inspector

- ImageSender.xul

- contextSaveBGImage.xul

- View Page Source External from Context menu

- Adds "View & Edit Download Actions..." button

- Inspect Window.js/inspectWindow.xul

- shortenLink.xul

- View Selection Source in Tab

- Open urlbar URL's and bookmarks in new foreground tab or in current tab if it's blank

- Close All Tabs, Close Left Tabs, Close Right Tabs, Purge Tab History

- important.uc.js

- Copy Feed URL

- Fashion Tabs (Chromatabs lite)

- Undo Close Tab Menu (moves the Recently Closed Tabs menu over to Tools for when you've hidden the History menu; and adds a one-shot session saving/restoring function)

- Drag'n'Duplicate (allows to move tabs between windows and copy tabs through drag&drop; cf. Copy Dragged Tab)

- Sub-XUL Loader

- Tab Session Manager

- Copy Feed URL 2.0

- greasemonkey_mod.uc.js

- stopreloadgo.uc.js

- Prominent Domain(Locationbar2)

- Move menus from menubar to bookmarks toolbar button as context menu (without any others)

- Clear search term

- Load progress in title

- Hover tab bar scroll-buttons

- Status bar in menubar

chocolateorange
編集
こんなに月も紅いのに
編集
- SafariHighlight.uc.js ver. 1.0.0
Safariのインライン検索のハイライトみたいに動作させるスクリプト
SCRAPBLOG (xuldev.org)
編集
Days on the Moon
編集
r-Studio
編集
鳥獣保護区
編集
zoolcar9.lhukie.net
編集
かなりいっぱいある、作成中。
朝顔日記
編集
- Network.http.pipelining 有効・無効を簡単に切り替える userChrome.xul

- 再起動用の userChrome.js

- 閉じたタブを復元するボタンを追加する userChrome.js スクリプト

- userChrome.xul で ToggleStyle

- Firefox のツールバーのラベル文字列をケチる
- 拡張機能で追加されたツールバーのラベル文字列をケチる。id を変更すれば他の拡張機能にも応用可能
もか日記
編集
- Compact Menu for userChrome.js
- メニューをThrobber(読み込み時にくるくる回るやつ)から表示する
- Youtube FLV ダウンロード for userChrome.js

alice0775のファイル置き場 別館
編集
Code-404
編集
- CopyUrlLitePlus.uc.js
- Copy URL+のuserChrome.js版
- MainMenusInOne.uc.js
- メインメニューの項目を 1 つにまとめる
- UserAgentSwitcherLite.uc.js
- User Agent SwitcherのuserChrome.js版
iMona@zuzu開発者日記
編集
- refererChanger.uc.js

- RefControl代替用リファラ偽装スクリプトのFake Referer、fakeReferer modの拡張版
- ExtraConfigMenu.uc.xul

- userScript,Chrome,Contentなどを編集する時に便利なメニューを追加
Griever
編集
- keyconfig_Modoki.uc.js

- keyconfig代替用スクリプト(各種入力欄等のページ表示領域以外の箇所にフォーカスが移っている状態では効かないので注意)
- KeyChanger.uc.js

- keyconfig_Modoki.uc.jsの後継版
- 特徴
- メニューバー>ツール>Reload KeyChanger scriptからキー設定の再読み込みが可能。
各種入力欄にフォーカスが移っている状態でも設定したキーの入力が可能。 - 備考
- _keychanger.jsの文字コードはUTF-8に設定する。
FireGesturesや軽量マウスジェスチャ等で利用可能なスクリプトを配布サイトのサンプルの大半と同様に記述する場合、コード内に改行がある場合は改行を消して一行化し、ダブルクォーテーション(")を使用している場合は、コード内のダブルクォーテーション(")をシングルクォーテーション(')に置き換えて記述する。
コード内の改行を消さずに利用したい場合や、コード内にバックスラッシュ(\)を使用している場合は、コードを「"」と「";」の代わりに「function(){」と「};」で囲んで記述する。
入力欄ではFirefox標準の編集用のキー設定が優先されるので、キー設定が重複する場合は別のキーに設定にする等して対処すると良い。
- keyconfig_Modoki.uc.jsの後継版
gxueの日記
編集
- 軽量マウスジェスチャ強化版
- 軽量マウスジェスチャ
の機能強化版(使用環境によってはクリックの誤動作が起きやすい場合があるので注意)
- 軽量マウスジェスチャ
Cherenkovの暗中模索にっき
編集
- ホイールでタブ切り替え
- Tab Wheel Scroll代替用スクリプト
2chで投稿されたスクリプトなど 編集
- BHNewTab.uc.js.1.1mod10
ブックマークと履歴の開き方を変更するスクリプト. - BHNewTab.uc.js.1.1mod21
ブックマークと履歴の開き方を変更するスクリプトFx3用. - BHNewTab.uc.js.1.1mod26
ブックマークと履歴の開き方を変更するスクリプトFx3用. - ucjs 用の雑多なスクリプト集
// Undo List in Tab Context Menu 「最近閉じたタブ」をタブコンテキストメニューへ移動.// Undo List 30 「最近閉じたタブ」の項目数を 30 に.// Auto Close Blank Tab 空タブを自動的に閉じる.// Reload Plus コンテキストメニューの「更新」を現在のフレームのみに.+ SHIFT or CTRL 同時押しでキャッシュ無効の更新.// Download Manager in Sidebar ダウンロードマネージャーボタンを押すと,サイドバーで開く.// View Menu in Context Menu 表示メニュー内のコンテンツ関連を,コンテキストメニュー内に移動.// Fake Referrer リファラが開こうとしているドキュメントと別のサーバーだと,ドキュメントと同じサーバーから開かれたように偽装する. - Web 検索バーの横に検索エンジンごとのボタンを追加するuc.xul

- SelectSearchInTextArea.uc.js
textarea等でも文字列選択して右クリック→検索できるようにする.コンテキストメニューからの検索の時, 中クリックもしくはshiftキー押しながらで入力ダイアログを表示して編集してから検索する - 選択した部分のソースを表示をバックグラウンドのタブで開く.uc.js

- DOM Inspector で Select Element By Click する時に.uc.js
DOM InspectorでSelect Element By Clickする時に左クリックで反応しちゃうからメニューの深い階層を調査できないのが微妙に不便なので中クリックのみに反応するようにするパッチ - 2chのURLを踏んだ時にjaneで開く改_bugfix.uc.js

- Ctrl+F押したらFindbarが出るけどもう一回押したら消える.uc.xul

- GMailManagerのステータスバーのメールアドレスのat以降を非表示にする.uc.js

- Link右Click後ContextMenu[~を保存]を中ClickでLink先を保存する.uc.js

- RestoreScrollPos.uc.js
再読込み後にスクロール位置が変わらないようにする - copy_link_text-1.0-fx.uc.xul
リンクのテキストをコピーする - dragimage_v2.uc.js
画像をマウスドラッグでスクロールできるようにする - launch2chBrowser.uc.js
urlを右クリックから2chBrowserを起動する - mergeWindow2.uc.js
ウィンドウをマージする - scrollListBox.uc.js
リストボックスをその場でマウスホーイールにより選択する - ucjs_2ch_mailto.uc.js
2chレスのメールのリンクを削除する - リンクもしくは選択文字列もしくは現在のURLをTubePlayerで開く.uc.js

- 右ダブルクリックでリンクを新しいタブで開く.uc.js

- 名前を付けてリンク先を保存においてダイアログをでなくする.uc.js

- 新しいWindowを開いた後元Windowに重ねる.uc.js

- search historyとかsuggestの語句選ぶと即検索にいくのを止めるforFx3.uc.js

- 検索した後にbrowsersearchdefaultenginenameの検索エンジンに戻す.uc.js

- 検索エンジンのアイコンをホイールクリックで検索バーをクリア.uc.js

- 縦スクロールバー上の右クリックメニューを追加しTopとBottomにスクロール.uc.xul

- 軽量マウスジェスチャー用選択テキストをクリップボードにコピー.txt

- Thunderbird用右クリックで選択文字列をFirefoxでGoogle検索.uc.js

- 文字列選択時に文字列を自動でクリップボードに送る

- 文字列選択時に文字列を自動でクリップボードに送る(編集可能領域等では自動コピーしない)

- ucjs_Stylish_modoki.uc.xul
Stylish代替用XUL
userContent.js 編集
Greasemonkey互換。
- 旧userContent.js ver. 0.8

- 旧userContent.js ver. 0.9

- 旧userContent.js ver. 1.0

- 旧userContent.js ver. 1.1

- 旧userContent.js ver. 1.11
本体のみ - 旧userContent.js ver. 1.2

- 旧userContent.js / userMenu.js の修正版

- userContent.js ver. 1.3

- userContent.js ver. 1.3mod本体のみ(Fx3以降
(書庫の中身を1.3のホストディレクトリに上書き) - userContent.js ver. 1.3mod3一式(Fx3以降
(userContent1.3mod3ややこしいので最新を一式にまとめた) - userContent.js 管理ツール

- userContent.js ver. 1.3mod6

- userContent.jsは, GM用スクリプトのほとんどが動作すると思う, ツールメニューによりスクリプトのOn/Offの制御が可能。
- セキュリティ面から,それぞれのスクリプトは,スクリプト毎に用意されたXPCNativeWrapperでラップされた名前空間で実行するようになっている。そのため,GMの一部のスクリプト(ドキュメント内スクリプトを参照するような)は動作しないようになっています。
userMenu.js 編集
- userMenu.js本体/一式
- 旧userMenu.js ver. 0.7

- 旧userMenu.js ver. 0.8

- 旧userMenu.js ver. 0.9

- 旧userMenu.js ver. 1.0

- 旧userMenu.js ver. 1.1

- 旧userContent.js / userMenu.js の修正版

- userMenu.js ver. 1.2

- userMenu.js ver. 1.21 本体のみ
(中身を1.2のホストディレクトリに上書き) - userMenu.js ver. 1.21mod 本体のみ(Fx3以降)
(書庫の中身を1.2のホストディレクトリに上書き) - userMenu.js ver. 1.21mod 一式(Fx3以降)
(userMenu.uc.js 1.21modややこしいので最新を一式にまとめた) - userMenu-1.21mod5 - Bug 482788対策版
(Namoroka 3.6b2pre, Minefield3.7a1pre)
- 旧userMenu.js ver. 0.7
- userMenu.js用スクリプト
- userMenu.js, サブメニューのネスト, タブメニューやメインメニューなど, より拡張されている。
- Ver0.9以降新機能にタブ毎にセキュリティ・ポリシーを設定できるタブコンテキストメニューが追加された。
- JSAに比べセキュリティが強化されているため一部のスクリプトは修正が必要。
- Tips(userContent.js ver. 1.0,userMenu.js ver. 0.9)
セキュリテイからGM用スクリプトが動作できない場合, 以下の修正を行うことで動作するようになります。(ver1.0) 元のGM用スクリプトに以下に示す最初3行と最後1行を追加する。
var namespace = new unsafeWindow.Function(); namespace.prototype = this; eval((function(){ (function(){ ......元のGM用スクリプト本体 })(); }).toSource() + '();',new namespace()); - Tips(userContent.js ver. 1.11,userMenu.js ver. 1.0)
- jsaのようにComponentsを使えるようにするには
var global = new chromeWindow.Object(); global.window = unsafeWindow; global.document = unsafeDocument; global._jsaCScript = _jsaCScript; eval('(' + function(){ 最後に↓を追加. }.toSource() + ')();',global);またはvar namespace = new unsafeWindow.Function(); namespace.prototype = this; eval((function(){ (function(){
......元のJSA用スクリプト本体 })(); }).toSource() + '();',new namespace());
- JsActions.scriptFolderPathは,_jsaCScript.currentScriptPath.replace(/[^/\\]+$/,'')で代用
- windowオブジェクトをなるべく保持するようになった
1.11ではwindowオブジェクトをなるべく保持するようになっているので,AutoPagerizeの場合, 同スクリプト内のif (typeof(window.AutoPagerize) == 'undefined') { window.AutoPagerize = {} window.AutoPagerize.addFilter = function(f) { AutoPager.filters.push(f) } window.AutoPagerize.addDocumentFilter = function(f) { AutoPager.documentFilters.push(f) } }を//if (typeof(window.AutoPagerize) == 'undefined') { window.AutoPagerize = {} window.AutoPagerize.addFilter = function(f) { AutoPager.filters.push(f) } window.AutoPagerize.addDocumentFilter = function(f) { AutoPager.documentFilters.push(f) } //}としないと, filterが機能しないようです。これは,元のAutoPagerizeのバグと思われる。 - windowオブジェクト下のonloadを初めとする「on~」と言う一連のイベント用のコールバックは使えないので,unsafeWindowを使う必要があります.これはGMでも同様. window.addEventListenerは動作しますが,ver. 1.1でスクリプトの起動タイミングが遅くなったため,loadイベントの後にスクリプトが起動され,イベントを捕らえられない事があります.
- Exception... "'Permission denied to get property Function.__parent__' when calling method:.....
非特権コードから特権コードを呼び出そうとして失敗したんじゃないかと. メタデータに「@privilege false」(ver1.2ではバグのためtrueとする)を追加するか,userContent.pl.jsの「USE_GM」を「2」にすれば動くと思います. - ReferenceError : ※ is not defined
極一部を除くchromeWindow下のプロパティやメソッドを,chromeWindowを省略して呼び出せなくなりました. - GM_Modoki.jsl:GM_xmlhttpRequestのイベントハンドラでの例外が発生する場合, 同メソッドの該当箇所を下記のようにする。
setTimeout(function(){ if(typeof obj.data == 'string') req.send(obj.data); else req.send(null); }, 500);※ver1.2では上記対策済み。 - malformed URI sequenceエラー UTF-8 でないファイルをUTF-8として扱おうとして出るエラーです. pl.jsファイル中の, USE_UTF8が「2」なら,全てのファイルをUTF-8で保存するか「1」に変更する. USE_UTF8が「1」なら,該当ファイルに適当な日本語の注釈文でも入れて自動判別が成功するようにする. USE_GMが「2」なら,*.user.jsを全てUTF-8で保存する.
adblock#.uc.js 編集
軽量版Adblock
- adblock#.uc.js

- 使い方
adblock#.uc.jsのfilterの有効範囲内に
filter: [ 'mozilla.com/img/', 'mozilla.jp/img/' ],
等として記述する。
詳しくはreadmeやadblock#.uc.jsのコメントを参照。