Last active
August 29, 2015 23:55
-
-
Save Griever/62715 to your computer and use it in GitHub Desktop.
Firefox の挙動を Opera 風に書きかえる
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name OperaStyle.uc.js | |
// @namespace http://d.hatena.ne.jp/Griever/ | |
// @description Shift+Enter でリンク等を新しいタブを開く | |
// @include main | |
// @include chrome://browser/content/bookmarks/bookmarksPanel.xul | |
// @include chrome://browser/content/history/history-panel.xul | |
// @conpatibility Firefox 25 | |
// @version 0.0.5 | |
// ==/UserScript== | |
// Ctrl + クリック(Enter) で新しいタブ | |
// Shift + クリック(Enter) で新しいタブ(前面背面は Ctrl と逆) | |
// Ctrl + Shift + クリック(Enter) で新しいウインドウ | |
// Alt + Enter でダウンロード | |
// Web ページで Alt + ホイールクリック でダウンロード | |
// Web ページで Alt + クリック は何もしない(文字列選択用) | |
(function(){ | |
// Firefox 12 以降専用 | |
if (25 > parseFloat(Cc['@mozilla.org/xre/app-info;1'].getService(Ci.nsIXULAppInfo).version)) | |
return; | |
// browser.xul, bookmarksPanel.xul, history-panel.xul で利用 | |
whereToOpenLink_org = whereToOpenLink; | |
eval('whereToOpenLink = ' + whereToOpenLink_org.toString() | |
.replace('if (ctrl', 'if (ctrl && !shift|| !ctrl && shift') | |
.replace('if (shift ||', 'if (shift && ctrl ||') | |
.replace('middle && middleUsesTabs', 'middle && middleUsesTabs && !alt') | |
); | |
// 以下 browser.xul のみ | |
if (location.href !== "chrome://browser/content/browser.xul") | |
return; | |
// Alt + Click 時に選択範囲があれば DL しない | |
// マウスを離すまで Alt を押しっぱなしにすること | |
if (!window.handleLinkClick_org) | |
window.handleLinkClick_org = window.handleLinkClick | |
eval("handleLinkClick = " + handleLinkClick_org.toString() | |
.replace( | |
'if (where == "save") {', | |
'if (where == "save") { if (!doc.defaultView.getSelection().isCollapsed) return true;') | |
// Bookmarklet を現在のページに | |
// Ctrl+Alt+クリックで WebPanel で開く | |
.replace(/var doc/,'\ | |
if (href.substr(0, 11) === "javascript:") {\ | |
where = "current";\ | |
} else if (!event.button && event.altKey && event.ctrlKey && !event.shiftKey) {\ | |
openWebPanel(linkNode ? linkNode.textContent: "", href);\ | |
return true;\ | |
}\ | |
$&\ | |
') | |
) | |
// アドレスバーでも上記設定を利用(Alt + Enter がダウンロードになるので注意) | |
eval("gURLBar.handleCommand = " + gURLBar.handleCommand.toString() | |
.replace('gBrowser.selectedBrowser.focus();','\ | |
gBrowser.selectedBrowser.focus();\ | |
var where = where = whereToOpenLink(aTriggeringEvent, false, false);\ | |
var params = {allowThirdPartyFixup: true, postData: postData};\ | |
openUILinkIn(url, where, params);\ | |
return;\ | |
'.toString()) | |
// 検索した場合などはアドレスバーの履歴に入れない | |
.replace( | |
"addToUrlbarHistory(url);", | |
"if (url == this.value) addToUrlbarHistory(url);" | |
) | |
); | |
// Shift + Enter を押したときの「.net」の補完をやめる | |
gURLBar._canonizeURL_org = gURLBar._canonizeURL; | |
gURLBar._canonizeURL = function _canonizeURL(aTriggeringEvent) { | |
return Task.spawn(function() { | |
var url = this.value; | |
if (!url) | |
throw new Task.Result(["", null, false]); | |
let data = yield getShortcutOrURIAndPostData(url); | |
throw new Task.Result([data.url, data.postData, data.mayInheritPrincipal]); | |
}.bind(this)); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment