Kuruman Log

かつて自分のカスタムログを書きためていたこともあった

Subscribe to RSS feed

Posts tagged with "userjs"

ニコニコ動画観たい

miya2000さんの作られた"nicovideo - view without login."を入れてログイン要らなくしました!
……が、開発者曰く何処にでもはれるようにするのはもう少し待てとのことです。とりあえずリンクはひとまず外すことにします。はい。

YouTubeを可能な限り高画質で楽しむためのUserJS

YouTubeの動画を参照した場合、高画質なものがあるときはそれに置換するUserJSです。事の経緯や詳細はYouTube HDをOperaへ移植したを参照してください。

youtubehd.js

高速にブックマークしたい

ソーシャルブックマークへの投稿をいかに速くするかというのはブラウジング速度を速める上で大きな課題です。なにせ何度も読み込みますからね。

2008年3月19日版にて、下記のUser JavaScriptによる通信はセキュリティ上の問題によりOpera側で通信がブロックされるように仕様が変更となりました。つきまして、紹介しておりますUser JavaScriptは現行のOpera 9.5 Snapshotでは動作いたしません。以下、歴史的資料として残しておきます。

で、minibufferbookmarkcommandを発見した次第です。早速minibufferと併せてて導入してみました。しばらくUserJSは減らす一方でしたので、久しぶりです。これを入れるとminibufferを利用してソーシャルブックマークへの投稿が可能になります。

minibufferはご存じの方も多いと思いますし、vimを使っている方でしたらなじみもあるかと思いますが、":"を押すと画面下に入力欄が現れ、コマンドを入力することができる、というもの。"|"を使って(Unixのように)左側の内容を右側へ流し込むことができます。たとえば、

location | bookmark -d "--tag=Opera UserJS"


とすると、

  1. 現在開いているタブの(location)を"|"の右側に渡す
  2. 渡されたもの(location)をソーシャルブックマークに投げる(bookmark)
  3. ソーシャルブックマークにはdel.icio.usを使う(-d)
  4. タグは"Opera"と"UserJS"を付ける("--tag=Opera UserJS")


となります。

タグの補完が効くというのが素晴らしいですね。

ちなみにminibufferbookmarkcommandはArrayオブジェクトを勝手に拡張するなど、あまり行儀の良いスクリプトではありません。tumblrの投稿時やdel.icio.usのタグ補完など、幾つかの箇所で問題が発生しますので覚悟の上でご利用ください。やっつけでブラックリストを書いていますが、きりがありません。はい。きっと他にも影響するでしょう。

// ==UserScript==
(中略)
// @include        *
// @exclude        http://*.tumblr.com/*
// @exclude        http://del.icio.us/Kuruma?url=* // <- たびたび間違ってブックマークレットを起動するので、その辺りをごまかしてます
// ==/UserScript==


CodeReposなので誰かが依存を無くしてくれる気もします。というか自分やれよという話ですね、はい。とりあえずアカウントを申請しましたよ。

……なんて思っていたらショートカットキーも追加されるようで。とりあえず私にとっては押しにくく誤爆も多いキーですので、こんな具合に書き換えています。

window.Minibuffer.addShortcutkey({
 key: 'M', // ショートカットキーをBからMに変更
 description: 'Bookmark with comment', // 要約も気分的にちょっとだけ変更
 command: function(){
   var target_cmd = getTargetCommand();
   window.Minibuffer.execute(target_cmd + ' | bookmark ' + SBM + ' --tag --comment');
 }});
// タグだけでブックマークするショートカットキーを追加
window.Minibuffer.addShortcutkey({
  key: 'M',
  description: 'Bookmark without comment',
  command: function(){
    var target_cmd = getTargetCommand();
    window.Minibuffer.execute(target_cmd + ' | bookmark ' + SBM + ' --tag');
  }});


タグ無しでブックマークするということはあり得ませんので、"N"でコメント無し、"M"でコメント付きのブックマークを行うようにしてあります。@mattnありがとう!

んー、しかし、僕の場合ショートカットキーの部分だけ抽出すれば事足りる気がしてきた。

一応Arrayオブジェクトを拡張しないように修正したりとか自分好みにカスタマイズし終えたUserJSファイルを転がしておきます。
minibufferbookmarkcommand.js

LDRフォーカス時にIMEを無効化するUserJS

LDRの棒人間に怒られないようにするGreaemonkeyスクリプトを入れてみたら中々快適でした。OperaではIMEの状態を巧く拾ってくれない(?)ので少なくとも僕の環境では棒人間は見知らぬ振りをしてくれるのですが、IMEを無効化してくれれば幾分か楽になります。Ctrl-Tabなどで切り替えただけでは無効化されませんが、それでもある程度負担が軽減されるのは確か。これは結構オススメです。

ちなみにこのスクリプト、作成者のページにはWindows専用とありますが、他環境の方も一度試してみるのが良いかと思います。やっていることは単にパスワードフィールドを通過させるだけのようですから、Windowsでしか機能しないというのがどうにも納得できないんですよね。……Mac OSってそういう仕様でしたっけ。

まぁ、opera-wiki.comにもこのUserJS紹介がありますので、動作確認された方は臆せず共有しましょう。

フォームへのフォーカス

そういえばTwitterで毎回毎回フォームにフォーカスするせいでFastForwardによるブラウズが面倒になっているのを適当にUserJSでっちあげて回避したのだけれど、ここに書くのをすっかり忘れていた。そうこうしてたらtakefさんが書いてたので、皆さんそれを使えばよいのではないでしょうか。はい。

Docufarmをもっと活用するためのUserJS

,

現在Docufarmはサービスを終了しています。PDFについてはlevaさんの提供するツールを代わりに使用することができます。涼崎さんがブックマークレットを公開していますのでこちらも併せてご覧下さい。

Hidetoさんのエントリーを見て感動したのでUserJSにしてみた。Docufarm素晴らしい。

導入すると概ね良い具合にリンクをDocufarmへ飛ばすようになるはずです。トリッキーなことはしていないので、Greasemonkeyとしても動作するかと思いますが、こちらは未確認。
redirectToDocufarm.user.js
よく考えたらこれってブックマークレットで良いよね、という事に気づいた。で、できたのがこんなブックマークレット。
javascript:(function(){var e=new Array('pdf','ppt','doc','rtf','ps');var l;for(var i=0;l=document.links[i];i++){if (l.href.indexOf('www.docufarm.com')<0){for(var j=0;j<e.length;j++){if(l.href.lastIndexOf(e[j])>=1){l.href='http://www.docufarm.com/view.jsp?url='+l.href;break;}}}}})();

残念ながらブックマークレットをそのままmy.operaには書けないようなので別の場所に作っておく。

以下に一応古い内容も残しておく。

一般的にはこれを使うのがよいでしょう。が、常時リンクをスキャンするのはレスポンスの低下を招く。そんなわけで僕は以下のUserJSを導入している。 redirectToDocufarm_manual.user.js こちらはグローバル変数を汚染するのであまり美しくはない。けれど、こちらのUserJSでは任意のタイミングでリンクの書き換えを行えるようになる。具体的には、javascript:kurumanorg_redirectToDocufarm();を読み込んだとき。毎度毎度PDFやPPTを見るわけではないので、こういった方法の方がスマートな気がするのです。 ところで、これ書いてるときにこんな風にソースを書きたい衝動に駆られた。
if (typeof(kurumanorg) == 'undefined') {
  function kurumanorg() {};
}
要するに複数のUserJSで定義するメソッドをすべて一つの変数の下に置きたいなぁ、と。すべてのUserJSの冒頭で未定義の時にのみkurumanorgとか云う謎関数をさっきのコードのような雰囲気で定義して、そのほかはすべてprototypeでぶら下げれば何となくきれいな気がする。けど、良い方法が浮かばなかった。

Google対策

Opera情報はとりあえずここから、と云われる(?)Opera Watdch経由でfix-google-services.jsが紹介されていたので早速導入。斉藤さんによる動作確認も行われているようですから、特に確認はせず、素直に導入。

UserJSで直せるようなことなのにそれをしないGoogle。マイノリティな人たちの戯言とはいえ単なる怠慢だったわけですね。

ちなみに私自身はGoogleのサービスをあまり使っているたちではありません。だって、自分の環境をないがしろにするようなサービス使いたくないじゃないですか。

CSSを色分けして表示させるUserJS

ユーザーJSでCSSファイルの構文ハイライトを導入してみた。中々良い感じだ。ここで敢えて要望を出すならば、色の指定が行われている箇所をうまく拾ってその色で表示するようにして欲しい、とかだろうか。

JapanizeがOperaから使えるようになった

日本語化されていないウェブサイトを強引に日本語化するプロジェクトであるJapanizeの恩恵をOperaでも享受できるようになった。japanize-opera.user.jsを導入するだけ。簡単。

この記事中にはJapanize の使用を中止したいときは、1 で選択したフォルダから japanize-opera.user.js を削除して Opera を再起動してくださいとあるが、他のUser JavaSctipt同様に再起動の必要はない。ファイルを削除して再読込すれば英語のまま表示される。

私はと云うと、導入してみたものの処理にかかるコストより英語を読むコストの方が小さい気がし、導入早々無効化してしまった。

ここ最近のUserJS事情

書き留めるのをすっかり忘れていた。GreaseOperaを入れたのに伴ってカンマ区切りでの複数フォルダ同時指定に不都合が生まれたので再びUserJavaScriptを一カ所に集結させた。

Google検索結果として新しいソースが帰ってくるとナンバリングされなくて若干不便になってしまった。これも今度時間がある時にどうにかしたいところ。尤も、これを機にSEO対策の魔の手でメタメタにされたGoogle検索から他の検索エンジンに乗り換えるというのも一つの手のような気はしている。有力候補はどこだろう……。ちなみに同様のことがLive Search(旧MSNサーチ)にも言えるのだけれども、こちらは利用頻度が低すぎて直す気にもならない。