「Firefox」タグアーカイブ

Googleの検索結果にサムネイルを追加していくユーザースクリプト Part2

google_thumbnail_2

open.thumbshots.org のサムネイルを追加するやつ が使えなくなったりしたので修正したものです。
色々調べてたら似たようなAdd-onsあります。むしろそっちをおすすめします。

動作確認
スクリプトの適当な説明
  • 検索結果の左側に112×82ぐらいの画像を表示
  • AutoPagerizeの2ページ目以降もどんどんサムネ追加
  • Amazonの場合はサムネじゃなくって商品画像を読み込む(一部画像でない)
  • Youtubeの場合は動画サムネを読み込む(一部画像でないかも)
  • ニコニコ動画の場合も動画サムネを読み込む(一部でない) 読み込まなくした
  • Chromeでも一応動く(要Tampermonkey)
  • Safariでも一応動くかもしれない(要NinjaKit)
  • もしかしたらBing検索でも表示される

ダウンロード: google_search_thumbnail.user.js

NinjaKitで管理する場合は Scripts→Add new script→スクリプト貼り付け→Saveで保存 (間違ってるかもしれません)

最近の修正内容とか

Firefoxの「すべての表示したページの履歴」を1発で消す.uc.xul

ucjs_clear_history

動作確認

キャッシュを消すやつ作ってたらこれもあったらいいんじゃないかってことです。
「表示したページの履歴」としてますが「ダウンロード履歴」も消えます。わりと適当です。

あと履歴が多いと消すのに時間が掛かってFirefoxが固まります。

ダウンロード: clear_all_page_history.uc.js for Firefox 27

ダウンロード: clear-all-history-fx50.uc.xul for Firefox 50

  • 2017.01.05 Firefox 50でも動くように書き直し
<?xml version="1.0" encoding="UTF-8"?>
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript"><![CDATA[
var ucjsHistoryClear = function() {
    try {
        PlacesUtils.history.clear();
    } catch (e) {
    }
}
]]></script>
<menupopup id="menu_ToolsPopup">
    <menuitem id="menu_ucjsHistoryClear"
              label="表示したページの履歴を消去"
              oncommand="ucjsHistoryClear()"/>
</menupopup>
</overlay>

右クリック禁止(oncontextmenu)や貼り付け無効(onpaste)を無効にする

油断してるとたまに出てくる「右クリック禁止です」みたいな頭の悪いサイトで禁止された動作を使えるようにします。
oncontextmenu=”return false;” や onpaste=”return false;” のアレです。

以下、貼り付け禁止を無効にするやつです。

なんかいろいろ禁止されてるクソサイトの場合は paste, contextmenu, drop あたり書いとけばいいと思います。

document.addEventListener('paste', event => event.stopImmediatePropagation(), true);
document.addEventListener('contextmenu', event => event.stopImmediatePropagation(), true);
document.addEventListener('drop', event => event.stopImmediatePropagation(), true);

指定したサイトでだけこのスクリプトを有効にしないと右クリックで独自のメニューを出すサイトでは、その右クリックが出なくなるので注意が必要です。

タブの一覧表示メニュー(#alltabs-popup)のミドルクリックでタブを閉じる.uc.js

動作確認

たまにタブを開きすぎてどうにもならないことがあるので一覧表示メニューから閉じられたら便利そうだと思いまして。
#alltabs-popup > menuitem には menuitem.tab というのがあってそれでタブ操作がしやすくなってます。

ダウンロード: middle-click-close-tab-in-alltabs-popup.uc.js

セキュアなサイトでURLバーの背景色を変えるやつ.uc.js

動作確認

緑色の鍵マーク表示するだけじゃ分かりづらい!
と感じてuserChrome.cssである程度指定できていたのがFirefox 38あたりから使えなくなったので、鍵アイコン(identity-box)と同じような属性持ってきてCSSで背景色を変更してます。
XPCOMなのでそのうち使えなくなります。

HTTPS: 青っぽくする
url_ssl

HTTPS (EV SSL): 緑っぽくする
url_evssl

混在コンテンツ: 黄色っぽくする
url_mixed

ダウンロード: secure-site-urlbar-color.uc.js

// テーマによっては変になるかもしれないのでこの部分の色を変更するといいかもしれない
var colors = {'insecure': '#fff', 'secure': '#def0f7', 'ev': '#def2d7', 'broken': '#ffffdd'},

検索バーのマウスホイールスクロールで検索エンジンを切り替えるやつ.uc.js

wheel_search

動作確認

検索バー上のホイールスクロールで検索エンジン切り替えるだけです。
Firefox 43以降では検索エンジンのアイコンも変えるようにしてます。

ダウンロード: wheelscroll-to-change-search-engine.uc.js
GitHub: wheelscroll-to-change-search-engine.uc.js

中止ボタンがXboxのアレに見えて困る

xbox_no_are

何を馬鹿な、きっと疲れてるんですよ。
あ、すいません…… しいたけのぱくりですwww

というノリで作ったやつを4年ぶりに更新してFirefox 43以降でも使えるよう署名付けました。

Firefox 43で確認。
インストール: xbox_no_are-1.1.1-fx.xpi

※アドオン形式にしましたがStylishやuserChrome.cssだけでいけます。

UserScriptLoader.uc.jsの@requireが動かない

@requireでjQueryやunderscore.jsを読み込んでるユーザースクリプトを使うとき、requireディレクトリにキャッシュがない場合、saveURI()で失敗するようになってます。
調べるとFirefox 36以降でパラメータが増えてるのが原因っぽいです。

void saveURI(
  in nsIURI aURI,
  in nsISupports aCacheKey,
  in nsIURI aReferrer,
  in long aReferrerPolicy,
  in nsIInputStream aPostData,
  in string aExtraHeaders,
  in nsISupports aFile,
  in nsILoadContext aPrivacyContext
);

ということで wbp.saveURI(uri, null, null, null, null, aFile, null); となってる箇所の4番目(in long aReferrerPolicy)に null を追加すると保存されます。

	wbp.persistFlags = Ci.nsIWebBrowserPersist.PERSIST_FLAGS_BYPASS_CACHE;
	wbp.persistFlags |= Ci.nsIWebBrowserPersist.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION;
	wbp.saveURI(uri, null, null, null, null, null, aFile, null);
	USL.debug("getContents: " + aURL);

同じようにメニューのSave Scriptをクリックしたときに保存できないのもsaveURIのパラメータが足りないからです。
こんな感じで null 追加。

			var loadContext = win.QueryInterface(Ci.nsIInterfaceRequestor)
				.getInterface(Ci.nsIWebNavigation)
				.QueryInterface(Ci.nsILoadContext);
			wbp.saveURI(uri, null, uri, null, null, null, fp.file, loadContext);

XPCOM廃止するとか言ってんのに今さら仕様変更すんなよ……。

Firefoxのブックマークツールバーにあるフォルダをマウスオーバーで開くだけ.uc.js

動作確認

フォルダ開くのに1クリックすら面倒くさい。
そんな感じでしたがマウスオーバーで開くと逆に鬱陶しく感じるようになって使ってないので動作確認しただけです。

ダウンロード: mouseover-open-bookmark-folder.uc.js
GitHub: mouseover-open-bookmark-folder.uc.js

「キャッシュを消す」メニューを追加する (Firefox 34, HTTP cache v2).uc.xul

clear-cache-v2

動作確認

2014年8月ぐらいにHTTP cache v1 API disabledとなってたようで、以前書いたキャッシュを消すスクリプトだとFirefox 32以降の HTTP cache v2 API (cache2フォルダに保存されてるやつ)に対応できてなかったので作り直しました。

.uc.jsじゃなくて.uc.xulになってますが document.createElement(‘menuitem’) とか書いてるのが面倒臭くなっただけです。

基本機能はツールメニューに「キャッシュを消去」を追加するだけです。

Firefox ESR 31でもabout:configでHTTP cache v2を使うようにすればいけます。

ダウンロード : clear-all-cache-v2.uc.xul
GitHub : clear-all-cache-v2.uc.xul

<script type="application/x-javascript"><![CDATA[
var ucjsCacheClear = function() {
    var cacheSS = Cc["@mozilla.org/netwerk/cache-storage-service;1"].getService(Ci.nsICacheStorageService);
    try {
        cacheSS.clear();
    } catch (e) {
    }
    // Vimperator
    var liberator = document.getElementById("liberator-message");
    if (liberator) {
        liberator.value = 'キャッシュ消去';
    }
}
]]></script>
<menupopup id="menu_ToolsPopup">
    <menuitem id="menu_ToolsCacheClear"
              label="キャッシュを消去"
              accesskey="c"
              oncommand="ucjsCacheClear()"/>
</menupopup>