[userChrome.js] 軽量マウスジェスチャで利用可能なスクリプト集

[userChrome.js] 軽量マウスジェスチャで利用可能なスクリプト

「○○をジェスチャにしたいんだけど、userChrome.jsには何て書けばいいの」といった話題はこちらでコメントお願いします。

ナビゲーション

// 戻る
document.getElementById("Browser:Back").doCommand();
// 進む
document.getElementById("Browser:Forward").doCommand();
// 更新
document.getElementById("Browser:Reload").doCommand();
// 更新(キャッシュを無視)
document.getElementById("Browser:ReloadSkipCache").doCommand();
// ホーム
document.getElementById("Browser:Home").doCommand();
// 中止
document.getElementById("Browser:Stop").doCommand();
// 巻き戻し(履歴の先頭へ戻る)
if (gBrowser.sessionHistory.index > 0)
    gBrowser.gotoIndex(0);
// 早送り(履歴の末尾へ進む)
var nav = gBrowser.webNavigation;
var hist = nav.sessionHistory;
nav.gotoIndex(hist.count - 1);

ウィンドウ

// 新しいウィンドウ
document.getElementById("cmd_newNavigator").doCommand();
// ウィンドウを閉じる
document.getElementById("cmd_closeWindow").doCommand();
// ウィンドウの最小化
window.minimize();
// ウィンドウの最大化/元のサイズに戻す
window.windowState == window.STATE_MAXIMIZED ? window.restore() : window.maximize();
// 全画面表示
document.getElementById("View:FullScreen").doCommand();

タブ

// 新しいタブ
document.getElementById("cmd_newNavigatorTab").doCommand();
// タブを閉じる
document.getElementById("cmd_close").doCommand();
// 閉じたタブを元に戻す
document.getElementById("History:UndoCloseTab").doCommand();
// [Tab Mix Plus] 最後に閉じたタブを復元(TMP独自のセッションマネージャを利用している場合)
gBrowser.undoRemoveTab();
// 前のタブへ
gBrowser.mTabContainer.advanceSelectedTab(-1, true);
// 次のタブへ
gBrowser.mTabContainer.advanceSelectedTab(+1, true);
// 文字を小さくする
document.getElementById("cmd_textZoomReduce").doCommand();
// 文字を大きくする
document.getElementById("cmd_textZoomEnlarge").doCommand();
// 標準の文字サイズ
document.getElementById("cmd_textZoomReset").doCommand();
// タブの複製
openNewTabWith(gBrowser.currentURI.spec, null, null, null, false);
// 他のタブをすべて閉じる
var browser = getBrowser(); browser.removeAllTabsBut(browser.mCurrentTab);
// すべてのタブを閉じる
var browser = getBrowser(); var ctab = browser.addTab("about:blank"); browser.removeAllTabsBut(ctab);
// 左のタブをすべて閉じる
var tabs = gBrowser.mTabContainer.childNodes;
for (var i = tabs.length - 1; tabs[i] != gBrowser.mCurrentTab; i--){}
for (i--; i >=0 ; i--){
    gBrowser.removeTab(tabs[i]);
}
// 右のタブをすべて閉じる
var tabs = gBrowser.mTabContainer.childNodes;
for (var i = tabs.length - 1; tabs[i] != gBrowser.selectedTab; i--)
{
    gBrowser.removeTab(tabs[i]);
}
// [Tab Mix Plus] タブを凍結
gBrowser.freezeTab(gBrowser.mCurrentTab);
// [Tab Mix Plus] タブを保護
gBrowser.protectTab(gBrowser.mCurrentTab);
// [Tab Mix Plus] タブをロック
gBrowser.lockTab(gBrowser.mCurrentTab);

ページ

// 先頭へスクロール
goDoCommand("cmd_scrollTop");
// 末尾へスクロール
goDoCommand("cmd_scrollBottom");
// ページアップ
goDoCommand("cmd_scrollPageUp");
// ページダウン
goDoCommand("cmd_scrollPageDown");
// このページをブックマーク
document.getElementById("Browser:AddBookmarkAs").doCommand();
// 名前を付けてページを保存
document.getElementById("Browser:SavePage").doCommand();
// ページのソースを表示
document.getElementById("View:PageSource").doCommand();
// ページの情報を表示
document.getElementById("View:PageInfo").doCommand();
// 印刷プレビュー
document.getElementById("cmd_printPreview").doCommand();
// 印刷
document.getElementById("cmd_print").doCommand();

ツール

// ダウンロード
document.getElementById("Tools:Downloads").doCommand();
// アドオン
document.getElementById("Tools:Addons").doCommand();
// プライバシー情報の消去
setTimeout(function(){ document.getElementById("Tools:Sanitize").doCommand(); }, 0);
// エラーコンソール
toJavaScriptConsole();
// オプション
setTimeout(function(){ openPreferences(); }, 0);
// DOM Inspector
inspectDOMDocument(content.document);
// 検索バーを開く/閉じる
if ("isFindBarVisible" in gFindBar)
    gFindBar.isFindBarVisible() ? gFindBar.closeFindBar() : gFindBar.onFindCmd();
else
    gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
// Web 検索ボックスのクリア
document.getElementById("searchbar").value = "";

サイドバー

// ブックマークサイドバー
toggleSidebar("viewBookmarksSidebar");
// 履歴サイドバー
toggleSidebar("viewHistorySidebar");
// [Sage] サイドバー
toggleSidebar("viewSageSidebar");
// [ScrapBook] サイドバー
toggleSidebar("viewScrapBookSidebar");
// [Foxage2ch] サイドバー
toggleSidebar("viewFoxage2chSidebar");
// サイドバーを閉じる
var sidebarBox = document.getElementById("sidebar-box");
if (!sidebarBox.hidden)
    toggleSidebar(sidebarBox.getAttribute("sidebarcommand"));

特殊操作

// ひとつ上の階層へ移動
var uri = gBrowser.currentURI;
if (uri.path == "/")
    return;
var pathList = uri.path.split("/");
if (!pathList.pop())
    pathList.pop();
loadURI(uri.prePath + pathList.join("/") + "/");
// 再起動
Cc["@mozilla.org/toolkit/app-startup;1"].getService(Ci.nsIAppStartup)
.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
// [ScrapBook] ページの取り込み
sbBrowserOverlay.execCapture(0, null, false , "urn:scrapbook:root");
// [ScrapBook] ページの詳細な取り込み
sbBrowserOverlay.execCapture(0, null, true , "urn:scrapbook:root");

TOP

146 Comments to “[userChrome.js] 軽量マウスジェスチャで利用可能なスクリプト集”

タブの複製のジェスチャはどう書けばいいですか?

タブの複製とは、現在開いているタブのURLと同じURLを新しいタブで開くということでしょうか?それなら、以下のようになります。

openNewTabWith(gBrowser.currentURI.spec, null, null, null, false);

nasishi:

「上位階層へ移動」と「タブの凍結」はどのようになるのでしょうか?

上位階層へ移動

var uri = gBrowser.currentURI;
if (uri.path == "/")
	return;
var pathList = uri.path.split("/");
if (!pathList.pop())
	pathList.pop();
loadURI(uri.prePath + pathList.join("/") + "/");

サブドメイン foo.example.com から http://www.example.com への移動は未対応です。

タブの凍結とはTabMixPlusの機能でしょうか?TabMixPlusがインストールされている前提でも良いでしょうか?

他のタブをすべて閉じる

var browser = getBrowser(); browser.removeAllTabsBut(browser.mCurrentTab);

すべてのタブを閉じる

var browser = getBrowser(); var ctab = browser.addTab("about:blank"); browser.removeAllTabsBut(ctab);

nasishi:

「上位階層へ移動」ありがとうございました
凍結はtmpインスト前提でよろしくお願いします

[Tab Mix Plus] タブを凍結

gBrowser.freezeTab(gBrowser.mCurrentTab);

[Tab Mix Plus] タブを保護

gBrowser.protectTab(gBrowser.mCurrentTab);

[Tab Mix Plus] タブをロック

gBrowser.lockTab(gBrowser.mCurrentTab);

3者の違いは知りません。

nasishi:

ありがとうございますorz
両者とも理想通りの動きをしてくれました

nanashi2:

右側のタブを閉じる 左側のタブを閉じる お願いします

便利に使わせて頂いています。
ロッカージェスチャをお願いしたいのですが可能でしょうか?
2chで紹介されていたフォーラムのを使ってみたのですが、タブをホイールで切替るのが上手く動かず(連続切替ができたりできなかったり)、動作後必ずコンテキストメニューが表示されてしまいます。

左をすべて閉じる

var tabs = gBrowser.mTabContainer.childNodes;
for (var i = tabs.length - 1; tabs[i] != gBrowser.mCurrentTab; i--){}
for (i--; i >=0 ; i--){
	gBrowser.removeTab(tabs[i]);
}

右をすべて閉じる

var tabs = gBrowser.mTabContainer.childNodes;
for (var i = tabs.length - 1; tabs[i] != gBrowser.selectedTab; i--)
{
	gBrowser.removeTab(tabs[i]);
} 

嵌っております・・・(^^;
AiO Gの「Any gesture sequence」はどう書けば良いでしょうかm(_ _)m

「Any gesture sequence」とはどういうものでしょうか?

> タブをホイールで切替る

こちらは試されましたか?
SCRAPBLOG : [userChrome.js] Mouse Wheel on Tab Bar
http://www.xuldev.org/blog/?p=72

> ロッカージェスチャ

この機能を使ったことが無いのでどういうものかよくわかりません。
少し調べてみてできそうならまた userChrome.js として実装してみます。

Going My Wayさんの
「カーソルを通過させたリンクを一気に開くAll in One gesturesの機能」
http://kengo.preston-net.com/archives/001779.shtml

を参照下さい。
このジェスチャがある為にOperaでもSleipnirでもunDonutでも無くふぉっくスケを使っております・・・(^^;

ロッカージェスチャの「右クリック+ホイール」は↓で「History Scroller」が公開されています。
http://nanto.asablo.jp/blog/2006/12/31/1083170

デフォルトでは左ボタンなので
const TRIGGER_BUTTON = 0; // 0: Left button, 2: Right button
の所を左ボタンなら2に書き換えて下さい。

理解しました。しかし、マウスポインタが通過したリンクをいちいち記憶させるとなると、毎回のジェスチャ動作がかなり重たくなることが予想されます。
代わりに、選択範囲内のリンクをすべてタブで開くような機能であれば、動作の軽さを損なうことなく実現可能です。それでもよろしいでしょうか。

「Any gesture sequence」をどんな時に使っていたかというと・・・
http://race.netkeiba.com/?pid=race&id=c200708010311
↑を開き馬名の所をタテになぞって「Any gesture sequence」+gestureで開いていました。

>選択範囲内のリンクをすべてタブで開くような機能
これだと、秀丸の「Alt」+矩形選択みたいな事が出来ないと「騎手」や「厩舎」のリンクまで開いちゃいますね・・・(涙

参考というか・・・報告です。
私の環境では「プライバシー情報の消去」実行後コンテキストメニューが表示されてしまうので「オプション」を参考にウエイト掛けています。

setTimeout(function(){ document.getElementById("Tools:Sanitize").doCommand(); }, 0);

Any gesture sequence

以下のパッチを適用させる。 _performAction の「const dirSeq = “RUL”;」がジェスチャシーケンス。

--- userChrome.js.bak	Mon Jan 08 00:38:04 2007
+++ userChrome.js	Mon Jan 08 00:38:21 2007
@@ -13,6 +13,7 @@
 	_lastX: 0,
 	_lastY: 0,
 	_directionChain: "",
+	_linkURLs: [],
 
 	init: function()
 	{
@@ -75,6 +76,7 @@
 		this._lastX = event.screenX;
 		this._lastY = event.screenY;
 		this._directionChain = "";
+		this._linkURLs = [];
 	},
 
 	_progressGesture: function(event)
@@ -99,11 +101,25 @@
 			this._directionChain += direction;
 			XULBrowserWindow.statusTextField.label = "Gesture: " + this._directionChain;
 		}
+		// ホバーしたリンクのURLを記憶
+		var linkURL = this._getLinkURL(event.target);
+		if (linkURL && this._linkURLs.indexOf(linkURL) == -1)
+			this._linkURLs.push(linkURL);
 		// 今回の位置を保存
 		this._lastX = x;
 		this._lastY = y;
 	},
 
+	_getLinkURL: function(aNode)
+	{
+		while (aNode) {
+			if ((aNode instanceof HTMLAnchorElement || aNode instanceof HTMLAreaElement) && aNode.href)
+				return aNode.href;
+			aNode = aNode.parentNode;
+		}
+		return null;
+	},
+
 	_stopGesture: function(event)
 	{
 		try {
@@ -114,10 +130,26 @@
 		catch(ex) {
 			XULBrowserWindow.statusTextField.label = ex;
 		}
+		this._linkURLs = null;
 	},
 
 	_performAction: function(event)
 	{
+		// Any Gesture Sequence
+		const dirSeq = "RUL";
+		if (this._directionChain.substr(dirSeq.length * -1, dirSeq.length) == dirSeq)
+		{
+			var docURL = event.target.ownerDocument.location.href;
+			this._linkURLs.forEach(function(linkURL)
+			{
+				try {
+					urlSecurityCheck(linkURL, docURL, Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
+					gBrowser.loadOneTab(linkURL, null, null, null, true, false);
+				} catch(ex) {
+				}
+			});
+			return;
+		}
 		// ここからがジェスチャへの機能割り当てです
 		// 自由にカスタマイズしてください
 		switch (this._directionChain)

パッチ当て成功しました(^O^)
お見事です(⌒0⌒)/
お付き合いくださいましてありがとうございますm(_ _)m

説明が下手ですいません。
> タブをホイールで切替る
これはaiojで使ってたのですが、右クリック+ホイールでタブを切替えるというやつです。
[userChrome.js] Mouse Wheel on Tab Barも既に使わせてもらってますが、カーソルをタブバーに持っていかなくていいので右クリ+ホイールの方をいつも使っていました。

> ロッカージェスチャ
これは、「右押しながら左でページ戻る」「左押しながら右でページ進む」ってやつです。
宜しくお願いします。

再起動ってジェスチャーで出来ますか?

これのおかげで拡張の数が減ったので、
Restart Firefoxも落としたいかと・・・

よろしくお願いします。

>再起動ってジェスチャーで出来ますか?

optimoz のMouse Gesturesからコードを拝借・・・(汗
ttp://en.mousegestures.org/gesture-exchange/details.php?mappingID=82

↓で再起動でけました。。。

var appStartup = Components.interfaces.nsIAppStartup;
Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(appStartup)
          .quit(appStartup.eRestart | appStartup.eAttemptQuit);

逃さま

でけました!
ありがとうございました!

エコテン:

巻き戻し(履歴の先頭に戻る)や早送り(巻き戻しの逆)といったジェスチャーは
どのように記述すればよいでしょう?

これらはどうですか?

Go to first page
http://en.mousegestures.org/gesture-exchange/details.php?mappingID=12

Go to last page
http://en.mousegestures.org/gesture-exchange/details.php?mappingID=45

くーま:

選択範囲内のリンクをタブで開く と
検索ボックスの文字列のクリア が可能でしたらお願いしますm(__)m

横から失礼します。
Gomitaさま、「Go to first page」「Go to last page」ともMouse Gesturesの公開コードで動作を確認しました。
上で私がMouse Gesturesのコードを紹介した事で気分を害していらっしゃらないか・・・
心配です・・・すみません・・・m(_ _)m

あと・・・私が2007-01-07 23:44に投稿した分に

#「Your comment is awaiting moderation.」

となっていて、クッキーがあるPCでは表示されますが他のPCでは見えません・・・
何でだろう・・・(・・?!
もしGomitaさまの趣旨に沿わないのでしたら削除下さいm(_ _)m

エコテン:

こちらでも動作確認しました
ありがとうございます。

のらん:

サイドバーでSageを開くことはできるでしょうか?

// Sageサイドバー
toggleSidebar("viewSageSidebar");
// DOM Inspector
inspectDOMDocument(content.document);

ロッカージェスチャの「右クリック+ホイール」
http://nanto.asablo.jp/blog/2006/12/31/1083170

// Web 検索ボックスのクリア
BrowserSearch.getSearchBar().value = "";

> 逃さん

理由はわかりませんが、ブログのシステムが勝手にスパムと誤認したために、コメントが承認待ちとなっています。気づいたらこちらで承認を行いますので、気にせず投稿してください。

> ロッカージェスチャの「右クリック+ホイール」
> http://nanto.asablo.jp/blog/2006/12/31/1083170

これは、「マウスボタンプレス中にホイールスクロールでタブの履歴をポップアップ」のことでしょうか?
履歴ではなく、「SCRAPBLOG : [userChrome.js] Mouse Wheel on Tab Bar」の動作をロッカージェスチャの「右クリック+ホイール」で出来ると嬉しいなと思ったのですが・・・

ttp://supert.garyr.net/userchrome/gestures.uc.jsも使ってみたのですが、1つ隣のタブに切替えるたびに止まってしまい連続で切替えれないですし、右クリックを離す度にポップアップが開いてしまいます。
自分でも色々やってるのですが、全然上手くいきません。

みっこ:

「何が開いているかに関わらず、サイドバーを閉じる」機能は追加できないでしょうか。

// サイドバーを閉じる
var sidebarBox = document.getElementById("sidebar-box");
if (!sidebarBox.hidden)
	toggleSidebar(sidebarBox.getAttribute("sidebarcommand"));

くーま:

検索ボックスのクリア動作しました!ありがとうございました!

“検索バーを開く/閉じる”が動作しないのは私だけ?

>”検索バーを開く/閉じる”が動作しないのは私だけ?

そうかもね・・・
オイラは問題なく動いている
Firefox2.0.0.1+UCJS Loader(UTF-8 マルチバイト文字、JavaScript 1.7対応)+軽量マウスジェスチャ

「メニューバーを隠す」が可能でしたらよろしくお願いします

// メニューバーを隠す/表示する
var menubar = document.getElementById("toolbar-menubar");
menubar.collapsed = !menubar.collapsed;

Gomitaさま 動作しました。ありがとうございました。

すいません、右クリックおしっぱなしで左クリックで更新(キャッシュ無視)と左クリックおしっぱなしで右クリックでタブロック(TMP)という動作を実現したいのですが、お願いできますでしょうか。

それはマウスジェスチャではなくロッカージェスチャというやつなので、別途 userChrome.js 用スクリプトを探して導入してください。

初めまして仮面:

ステータスバー表示・非表示のトグルをお願いしたいです。

// ステータスバー表示・非表示
document.getElementById("cmd_toggleTaskbar").doCommand();

選択した文字列を開く

選択したURLを開く
は出来ませんか?

初めまして仮面:

Anonymousさん、有難うございます。

「選択した文字列を開く」と「選択したURLを開く」の違いは何ですか?

// 選択範囲をURLとしてタブで開く
var sel = event.target.ownerDocument.getSelection().toString();
if (!sel)
	return;
var docURL = event.target.ownerDocument.location.href;
try {
	urlSecurityCheck(sel, docURL, Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
	gBrowser.loadOneTab(sel, null, null, null, true, false);
} catch(ex) {
}

選択範囲内のURLをすべてタブで開く+選択範囲がURLでなければWeb検索する
以下のスクリプトがそのまま利用可能です。

SCRAPBLOG : [userChrome.js] 選択範囲内のすべてのURLをタブで開く、またはWeb検索する
http://www.xuldev.org/blog/?p=48

ありがとうございます。

のらん:

Split Browserという画面を分割する拡張があります。
http://piro.sakura.ne.jp/xul/_splitbrowser.html

この拡張を導入した場合、分割された画面上ではジェスチャーが効かない、という現象がおこります。解決する方法はないでしょうか?

Split Browser で開いたサブブラウザにもジェスチャを対応させるには

initとuninitメソッド内の「gBrowser.mPanelContainer」を「document.getElementById(“appcontent”)」に変更する(計8箇所)。

副作用としてタブバー上でもジェスチャが効くようになります。

All-in-One Gesturesでいうロッカージェスチャをお願いできないでしょうか。
過去に話題に上がっていたようですが、一応、どういうものかというと、
・右クリック→左クリックでイベント(履歴を戻る)
・左クリック→右クリックでイベント(履歴を進む)
というクリックだけのジェスチャーのものです。

もしかしたら、別に実装した方が良いかもしれませんが。

↓にある gestures.uc.js には
・右→左:戻る
・左→右:進む
・右+ホイールスクロール:タブを切り替える
のロッカージェスチャが入っているようです。
ただ、軽量マウスジェスチャとの相性なのか実行後コンテキストメニューが出ることがよくあるみたいで・・・
http://supert.garyr.net/userchrome/

個人的にはロッカージェスチャは不要なのですが、要望が多少はあるみたいなので近日中に実装を試みる予定です。

IceNine:

http://yanako.blog26.fc2.com/blog-entry-117.html
ロッカージェスチャが組み込まれた、こちらのマススジェウチャスクリプトのカスタム版を作成した方がいるようです。

画像の上でジェスチャすることによってその画像を50%拡大、50%縮小、元の大きさに戻す、
ジェスチャは可能でしょうか?

「画像を50%拡大、50%縮小、元の大きさに戻す」というのは個別のジェスチャに割り当てるのでしょうか?
それともひとつのジェスチャで拡大率を循環させるような感じでしょうか?
下記は後者です。また、拡大する画像はジェスチャの始点にあるものではなく、終点にあるものとなります。

(function()
{
	var node = event.target;
	if (!(node instanceof HTMLImageElement))
		return;
	if (!node.hasAttribute("originalWidth")) {
		node.setAttribute("originalWidth", node.width);
		node.setAttribute("originalHeight", node.height);
		node.setAttribute("zoomingState", "original");
	}
	var w = node.getAttribute("originalWidth");
	var h = node.getAttribute("originalHeight");
	var z = node.getAttribute("zoomingState");
	switch (z) {
		case "original": 
			node.width = w * 1.5;
			node.height = h * 1.5;
			node.setAttribute("zoomingState", "double");
			break;
		case "double": 
			node.width = w * 0.5;
			node.height = h * 0.5;
			node.setAttribute("zoomingState", "half");
			break;
		case "half": 
			node.width = w;
			node.height = h;
			node.setAttribute("zoomingState", "original");
			break;
	}
}());

エンタングルメント:

便利に使わせていただいています。
”画像に名前をつけて保存”は可能でしょうか?よろしくお願いします。

いつも便利に使っています。
画像を自動的に読み込むのオン/オフをトグルさせることは出来ますでしょうか?

Gomitaさま
画像の拡大・縮小をお願いしたものです。
導入したところ、ばっちり動作いたしました。ありがとうございました!

「フレーム/選択した部分のソースを表示」するには何と書けば良いのでしょうか?

// 画像に名前を付けて保存
// 画像はジェスチャの終点にあるのものとなります。
// skipPromptをtrueにすると「名前を付けて保存」プロンプトを表示しません。
var endNode = event.target;
if (!(endNode instanceof HTMLImageElement) || !endNode.src)
    throw "Not on image";
var imgURL = endNode.src;
var docURL = endNode.ownerDocument.location.href;
urlSecurityCheck(imgURL, docURL);
var skipPrompt = false;
saveURL(imgURL, null, null, false, skipPrompt, null);

// 「画像を自動的に読み込む」を切替
const kPrefName = "permissions.default.image";
var prefVal = gPrefService.getIntPref(kPrefName);
prefVal = prefVal == 1 ? 2 : 1;
gPrefService.setIntPref(kPrefName, prefVal);

// 選択範囲またはフレームのソースを表示
var doc = event.target.ownerDocument;
if (doc.getSelection())
	nsContextMenu.prototype.viewPartialSource("selection");
else
	BrowserViewSourceOfDocument(doc);

エンタングルメント:

“画像に名前を付けて保存”をお願いしたものです。問題なく動作しました。ありがとうございました。

ついでに伺っておきたいのですが、このジェスチャーと上記の画像を拡大縮小するジャスチャーで
ジャスチャの終点にある画像ではなく始点にあった画像を対象にすることはできないでしょうか?
個人的にはなんとなくそっちの方がしっくりくるものですから。

重ねてお願いしてしまって申し訳ありません。変更するヶ所だけでも教えていただければ助かります。

// 「画像を自動的に読み込む」を切替
ばっちり動作いたしました。ありがとうございました。

// 選択範囲またはフレームのソースを表示
教えて戴きまして有り難うございました。軽量マウスジェスチャ、重宝しております。

chromechro:

「セッションを保存して終了」するには何と書けば良いのでしょうか?

// セッションを保存して終了
var prefBranch = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
prefBranch.setBoolPref("browser.sessionstore.resume_session_once", true);
goQuitApplication();

chromechro:

ありがとうございます。正常に動作しました。
これで All-in-One Gesturesともオサラバです。

「リファラのオン/オフを切り替える」には何と書けば良いのでしょうか?

// リファラのオンオフを切替
const kPrefName = "network.http.sendRefererHeader";
var prefVal = gPrefService.getIntPref(kPrefName);
prefVal = prefVal == 2 ? 0 : 2;
gPrefService.setIntPref(kPrefName, prefVal);
var msg = prefVal == 0 ? "Disabled Referer" : "Enabled Referer";
XULBrowserWindow.statusTextField.label = msg;

// リファラのオンオフを切替
見事動作しました。ありがとうございました。

いつも便利に使わせて&参考にさせてもらってます。

上のコメントでtakakaさんがおっしゃっている、
「タブ上じゃないところでも右クリック+マウスホイールでタブ切り替え」
ってのを書いてみました。
http://d.hatena.ne.jp/faminote/20070216/1171635775
見よう見真似でやってみた感じで無駄な部分とかあるかも知れませんが、
もしよろしければご覧ください。

> ついでに伺っておきたいのですが、このジェスチャーと上記の画像を拡大縮小するジャスチャーで
> ジャスチャの終点にある画像ではなく始点にあった画像を対象にすることはできないでしょうか?

100%同意しますが、現行のバージョンではできません。しかし、今後違った形で必ずや対応します。
以前掲載したマウスが通過した要素をすべてタブで開くことができるパッチを当てたバージョンなら可能です。

chromechro:

「Link Widgets」という拡張の、「トップ」、「前」、「次」を実行するには、どのように書けば良いのでしょうか。

GMarksのサイドバーを開きたいのですが、どう書けばいいでしょうか?

有難く使わせていただいています。
タブが1つだけの時に「タブを閉じる」と、firefoxごと終了してしまうのですが、「ファイル」メニューの「タブを閉じる」のように、ブランクタブを残すことは可能でしょうか。

失礼致しました。ちゃんとブランクタブが残るように動作していました。
勘違いをしていたようで申し訳ありませんでした。

tsukkee:

上でtakakaさんやayaさんがおっしゃっている「タブ上じゃないところでも右クリック+マウスホイールでタブ切り替え」をやってみました.最新のMac/Linux対応版にて,Macでしか確認していない上に通常のジェスチャーとの切り分けができていませんが…

initに

gBrowser.mPanelContainer.addEventListener(“DOMMouseScroll”, this, false);

を追加,uninitに

gBrowser.mPanelContainer.removeEventListener(“DOMMouseScroll”, this, false);

を追加,handleEventのswitch文の中に

case “DOMMouseScroll”:
if(this._isMouseDown) {
event.preventDefault();
event.stopPropagation();
gBrowser.mTabContainer.advanceSelectedTab(event.detail > 0 ? +1 : -1, true);
this._shouldFireContext = false;
}
break;

を追加でとりあえず動作します.

Vollmond:

「全てのタブを再読込」させるにはどのようなスクリプトを書けば良いのでしょうか?

// すべてのタブを再読み込み
gBrowser.reloadAllTabs(gBrowser.mContextTab);

Vollmond:

Gomitaさん、どうもありがとうございます
ただ、このジェスチャでリロードすると、新しいタブが開いてしまうのですが、それを解消する方法はないでしょうか

シンヤ:

画像を拡大・縮小・原寸を個別のジェスチャーに

// 画像を拡大
(function(){
	var node = event.target;
	if (!(node instanceof HTMLImageElement))
		return;
	if (!node.hasAttribute("originalWidth")) {
		node.setAttribute("originalWidth", node.width);
		node.setAttribute("originalHeight", node.height);
	}
	node.width = node.width * 1.25;
	node.height = node.height * 1.25;
}());
break;
// 画像を縮小
(function(){
	var node = event.target;
	if (!(node instanceof HTMLImageElement))
		return;
	if (!node.hasAttribute("originalWidth")) {
		node.setAttribute("originalWidth", node.width);
		node.setAttribute("originalHeight", node.height);
	}
	node.width = node.width * 0.75;
	node.height = node.height * 0.75;
}());
break;
// 画像を原寸
(function(){
	var node = event.target;
	if (!(node instanceof HTMLImageElement))
		return;
	if (!node.hasAttribute("originalWidth"))
		return;
	node.width = node.getAttribute("originalWidth");
	node.height = node.getAttribute("originalHeight");
}());
break;

シンヤ:

あれ、失礼。どうやって pre 要素使うか解りませんでしたorz

選択した文字列の検索は
BrowserSearch.loadSearchメソッドを用いることで可能なのですが,
その検索した文字列を検索バーに送るというような動作は可能なのでしょうか。
検索文字列のハイライト等が容易に行えるかと思いまして質問させて頂きます。

自己解決しました.
BrowserSearch.getSearchBar().valueの値に選択文字列を突っ込めばいいのですね。

シンヤ:

画像を拡大・縮小において、img要素にwidth属性・height属性が無かった場合に縦横の比率がおかしくなる問題を修正。

// 画像を拡大
(function(){
  var node = event.target;
  if (!(node instanceof HTMLImageElement))
    return;
  if (!node.hasAttribute("width"))
    node.setAttribute("width", node.naturalWidth);
  if (!node.hasAttribute("height"))
    node.setAttribute("height", node.naturalHeight);
  if (!node.hasAttribute("originalWidth")) {
    node.setAttribute("originalWidth", node.width);
    node.setAttribute("originalHeight", node.height);
  }
  node.width = node.width * 1.5;
  node.height = node.height * 1.5;
}());
break;



// 画像を縮小
(function(){
  var node = event.target;
  if (!(node instanceof HTMLImageElement))
    return;
  if (!node.hasAttribute("width"))
    node.setAttribute("width", node.naturalWidth);
  if (!node.hasAttribute("height"))
    node.setAttribute("height", node.naturalHeight);
  if (!node.hasAttribute("originalWidth")) {
    node.setAttribute("originalWidth", node.width);
    node.setAttribute("originalHeight", node.height);
  }
  node.width = node.width * 0.5;
  node.height = node.height * 0.5;
}());
break;

シンヤ:

あぁ、もうごめんなさいorz

「全タブの読み込み中止」
「All-in-One Sidebarのサイドバー開閉」
の記述内容をお願いします。

// すべてのタブの読み込みを中止
var len = gBrowser.mPanelContainer.childNodes.length;
for (var i = 0; i < len; i++) {
  gBrowser.getBrowserAtIndex(i).stop();
}

All-in-One Sidebar のサイドバー開閉とはサイドバーを一時的に表示しない(動作は続いている)機能ですか?

「すべて中止」の動作を確認しました。
ありがとうございます。

サイドバーの開閉とは、切り替えトグル(サイドバースイッチ)をクリックする度に実行されるトグル動作です。

// [All-in-One Sidebar] サイドバーとツールバーの開閉
aios_controlSwitch(
  { button: 0 , shiftKey: false, ctrlKey: false },
  document.getElementById("aios-toggle-button")
);

希望通り動作しました。
ありがとうございました。

AIOGでよく使っていた
「リンクを新しいタブで開く」 という動作はどのように記述したらいいでしょうか?
よろしくお願いします。

AIOGの機能だと思うのですが、画像がウィンドウよりも大きい時に
画像上でホイールクリックするとオートスクロールが使えるのですが
この機能は実現出来ますでしょうか?

画像の拡大と縮小が出来るImageZoomの機能は
ログにあったスクリプトを使わせてもらい、代用出来助かってます。

なんてはずかしい・・・
ONにしておいたはずのオートスクロールがOFFになってました。
画像の上でもオートスクロール出来てます。。。お騒がせしました。
 
ImageZoomスクリプトのおかげでどんどん拡張が減らせてうれしい限り。

AiOGでは文字サイズ変更(拡大・縮小)をホイールジェスチャ上下でやっていて
画像をマウスオーバー時では(同じ)ホイールジェスチャで画像サイズ変更(拡大・縮小)をできるようにしていたのですが
この様なことはできますか?

> 「リンクを新しいタブで開く」 という動作
Any Gesture Sequence というやつでしょうか?ここのコメントの「2007-01-08 00:41」にパッチがあります。

> AiOGでは文字サイズ変更(拡大・縮小)をホイールジェスチャ上下でやっていて
> 画像をマウスオーバー時では(同じ)ホイールジェスチャで画像サイズ変更(拡大・縮小)をできる
次期マウスジェスチャ拡張機能にて実装予定です。
userChrome.js版マウスジェスチャでの対応は未定です。

ご返事ありがとうございます。
説明が足りなく申し訳ありません。

その機能ではなく、
「リンクを新しいタブで開いて、そのタブに移動する」
という動作でした。
ミドルクリックで新しいタブで開いて、そのタブにジェスチャーで移動するというのが
二度手間な気がしてしまうので。

もしよければよろしくお願いします。

> ミドルクリックで新しいタブで開いて、そのタブにジェスチャーで移動する
単純に、「ツール」→「オプション」→「タブ」→「リンクを新しいタブで開いたとき、すぐにそのタブに切り替える」設定を有効にしておけばいいのではないでしょうか。

AiOGの機能にある、「このページを翻訳する」(google翻訳にて英語→日本語)
というジェスチャは可能でしょうか。
よろしくお願いいたします。

なるほど。
そういう設定があったんですね。
お手数おかけして申し訳ありませんでした。
ありがとうございました。

あまりに親切な対応に読んでて驚いた(^^;
おつかれさまです。
後で選んで使わせてもらいますm(_ _)m

// このページを翻訳する
const FROM = "en";
const TO = "ja";
const DOMAIN = "translate.google.com";
const URL = "http://" + DOMAIN + "/translate?langpair="
          + FROM + "-" + TO + "&hl=" + TO + "&u=";

var curURL = gBrowser.currentURI.spec;
if (curURL.indexOf(DOMAIN) != -1)
  BrowserReload();
else
  gBrowser.loadURI(URL + encodeURIComponent(curURL));

Gomita様
希望通りに動いております。ありがとうございました!

任意のキーを送る事は可能ですか?
alt+V、T、G
これをジャスチャーする毎にトグルスイッチの様に送りたいのですが。
よろしくお願いします。

「リンクを新しいタブで開く」でカーソルを通過させたリンクを一気に開く(Any Gesture Sequence)ではなく、一つのリンクだけ開きたいのですが、どのようにしたらよいのでしょうか?

最初に通過したリンク、という意味ですか?

はい、そのとおりです。
目的のリンクをホバーした状態で、ジェスチャシーケンス=U で新規タブで開くという感じにしたいのですが…

> Anonymousさん
キーイベントを送るということはできませんが、そのalt+V、T、Gの先にあるメニューを実行することは可能だと思います。

> masatoさん
Any Gesture Sequenceのパッチを当てて、Uのジェスチャに対して以下のように割り当てることで可能と思われます。

var linkURL = this._linkURLs[0];
var docURL = event.target.ownerDocument.location.href;
urlSecurityCheck(linkURL, docURL, Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
gBrowser.loadOneTab(linkURL, null, null, null, true, false);

希望どおり動作しました。
ありがとうございました。

2007-09-10 17:55のAnonymousです。
alt+V、T、Gは、googlebar liteのツールバーの表示非表示を切り替える為のキーです。
画面を広く使う為に頻繁に表示非表示を切り替えているのですが、出来ればジェスチャーで
やりたいです。
よろしくお願いします。

// Google Toolbar Lite の表示/非表示
var toolbar = document.getElementById("GBL-Toolbar");
toolbar.collapsed = !toolbar.collapsed;
document.persist(toolbar.id, "collapsed");

上のAnonymousです。
動作いたしました。ありがとうございます。

「リンク(最初に通過したもの)を新規タブで開く」と
「新規タブを開く」を同じジェスチャーに設定できないでしょうか?
AiO Gesturesのように、リンクを通過した場合は開き、しない場合は空白タブを開くというような。

Any Gesture Sequence のパッチを当てて、

if (this._linkURLs.length < 1) {
  document.getElementById("cmd_newNavigatorTab").doCommand();
  return;
}
var linkURL = this._linkURLs[0];
var docURL = event.target.ownerDocument.location.href;
urlSecurityCheck(linkURL, docURL, Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
gBrowser.loadOneTab(linkURL, null, null, null, true, false);

通過したものではなく、始点のリンクを新規タブで開くのにはどの様に記述するのでしょうか?

軽量マウスジェスチャでは始点のリンクを保持しないので、できません。
FireGestures なら可能です。

FireGesturesを利用しています。
AIOで言うところの「最後のタブ(一番右のタブへ移動)」と「前に選択していたタブに戻る(直前に選択していたタブへ移動)」の記述を教えてください。
よろしくお願いします。

軽量マウスジェスチャをmacで使わせてもらってます。
ブックマークをサイドバーで開くスクリプトを教えてください。

予めブックマークのプロパティから「サイドバーで開く」を指定し
↓のスクリプトだとタブへ開いてしまいます。
if(window.loadURI) loadURI(getShortcutOrURI(‘○○’,{})); break;
(○○にはブックマークのキーワードを記述)

この問題が解決すれば完璧なんですが、どうかよろしくお願いします

winxpで使わせていただいております.
非常に初歩的な質問になるかもしれませんが,ジェスチャによって
ページの背景色を変更するにはどのようにすればよいのでしょうか.
調べ方が悪いのか,結局わかりませんでしたのでよろしくお願いします.

body要素の背景色だけを変えるのであれば、以下のスクリプトで可能です。

window.content.document.body.style.backgroundColor = "lightgreen";

gomitaさん
window.contentを指定していなかったからできなかったのですね.
ありがとうございました.

toorisugari:

bookmarklet.daa.jpで公開されている「ファイル名の数字を1増やす(減らす)」Bookmarkletを元に軽量マウスジェスチャに何とか転用できないかなーとか考えていたけど結局面倒なのでBookmarkletをまるごとloadURIしてとりあえず動いたのでそのまんまにしてありますが…

もう少しスマートなやり口がありそうな…。以上駆け出しスクリプターのひとりごと…

「URL 中の数値を増加」「URL 中の数値を減少」ではダメなんですか?

名前をつけてリンク先を保存を軽量マウスジェスチャで行うスクリプトをご教示いただけないでしょうか?

ウインドウをタスクトレイに入れるってできますか?

potechin:

winで利用させていただいています。
ページ内テキストボックスに対してアクションは実行できませんよね?
例えば クリップボードから貼り付ける等。
宜しくお願い致します。

名前をつけてリンク先を保存

リンクに対する操作は色々な関数を別途追加する必要がありますので、軽量マウスジェスチャでは丸々省いています。 FireGestures ではリンク先に対して多彩な操作が可能ですので、乗換を検討してみてください。

ウインドウをタスクトレイに入れる

スクリプトだけでは実現できません。 MinimizeToTray をインストールしてください。

クリップボードから貼り付ける

goDoCommand("cmd_paste");

potechin:

済みません。私の質問が意味不明でした。
テキストボックス内から右ボタンのジェスチャー開始は出来ませんよね?
テキストボックス外から開始するとフォーカスが外れペーストされません。

テキストボックス内から右ボタンのジェスチャー開始

もちろんできますよ。ジェスチャの始点がテキストボックス内であれば、そこへ貼り付けされます。

potechin:

重ね重ね 済みません。 他のアドオンとぶつかってました。
有り難うございました。

「上位階層へ移動」使ったんですが
タブの左に新規作成されて、ジェスチャをしたタブも更新されました
ジェスチャしたタブで開くにはどうすればいいですか?

「上位階層へ移動」

これは現在のタブで開きます。そうでなければ、スクリプトの別の部分に間違いがあるはずです。例えば break 文が抜けていないかなど、見直してみてください。

新しいタブをホームページで開きたいのですが、可能でしょうか?
よかったらお願いします。

FIREGESTURES の 「最近閉じたタブ(ポップアップ)」 や 「スタイルシートを有効にする / 無効にする」、「ブックマークツールバーを隠す/表示する」 ジェスチャは可能ですか? 宜しければお願いします。

すみません自己解決しました;

いつも参考にさせて頂いております。
// リファラのオンオフを切替
で整数値を切り替えられるようになり大変重宝しているのですが、真偽値を切り替えるにはどのようにしたらよいのでしょうか。どこかの掲示板のコメントから
switch(this.PS.getBoolPref(this.pref)){
case true: this.PS.setBoolPref(this.pref,0);break;
case false: this.PS.setBoolPref(this.pref,1);break;
}
という記述を見つけたのですが動作しません。
お時間がございましたらご助言宜しくお願いします。

Fireguesturesを使用しております。
「リンクに乗っているときにジェスチャするとリンクを新しいタブで開く」というジェスチャと
「現在のタブを複製する」というコマンドは一緒にできませんでしょうか?

//新しいタブをホームページで開く
gBrowser.loadOneTab(“ホームページURL”, null, null, null, false, false);
return;
こんな感じでどうでしょう?一応載せておきますね。

戻るジェスチャをして戻るページが無い場合に閉じるというジェスチャを作りたいのですが
どうしたらいいでしょうか?よろしくお願いします

最近閉じたタブ(ポップアップ)はどうすればいいのでしょうか?
それとFireGesturesではbbschreader上でもジェスチャが動作するのですが
軽量マウスジェスチャでは動くように出来ないでしょうか?

軽量版マウスジェスチャを愛用させていただいているRyoと申します。
「同一ホストのタブを閉じる」コマンドを実現したいのですが自分の力では無理でした・・。
どのように記載すればよいか、もしよろしければアドバイス下さると嬉しいです。
よろしくお願いします。

>戻るジェスチャをして戻るページが無い場合に閉じるというジェスチャを作りたい
自分で解決することができました

TOP

TOP