Skip navigation.

exploreopera

| Help

Sign up | Help

Kuruman Log

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

opera:cacheでインクリメンタルサーチを実現するためのBookmarklet

edvakfさんのエントリーを通じて知ったopera:cacheにadvanced searchを追加する方法が素晴らしいのでBookmarkletとして覚え書きしておきます。

原典では言語ファイルを書き換える方法が紹介されています。こちらの方が圧倒的に使いやすいのですが、如何せん言語ファイルは適宜更新されるのが問題です。書き換えを忘れてしまいますからね。

何があろうとブックマークは引き継ぐので忘れませんから、私はブックマークレットで利用することにします。

javascript:(function(){for(var i=0;document.links[i];i++){document.links[i].target='_blank'};var l=document.getElementsByTagName('tr');var sf=document.createElement('input');sf.type='text';sf.defaultValue='Search';sf.style='margin:0 4px;float:right';sf.addEventListener('focus',function(){if(this.value==this.defaultValue){this.value='';}},false);sf.addEventListener('blur',function(){if(!this.value){this.value=this.defaultValue;}},false);sf.addEventListener('keyup',function(){var v=this.value;for(var i=0,li;li=l[i];i++){var p=li.lastChild.firstChild.innerText;if(p&&p.indexOf(v)==-1){li.style='display:none'}else{li.style='display:table-row'};}},false);var inp=document.createElement('input');inp.type='button';inp.value='Thumbnails';inp.style='float:right;';inp.addEventListener('click',function(){var b=/\.(jpe?g|bmp|gif|png|ico|swf|flv)$/i;var f=/\.(swf|flv)$/i;for(var i=0,li;li=l[i];i++){var p=li.lastChild.firstChild;var c=li.lastChild.firstChild.innerText;if(li.offsetHeight!=0&&p.childNodes.length<2){if(b.test(c)){var stl='float:right;border:1px dotted black;margin:1px;padding:1px;';if(f.test(c)){var dv=document.createElement('div');p.appendChild(dv);dv.innerHTML='<embed src='+p.href+'>';var fh=dv.firstChild;fh.setAttribute('height',100);fh.setAttribute('width',100);fh.setAttribute('style',stl+'content:normal;outline:none;color:inherit');}else{var image=document.createElement('img');image.setAttribute('src',p.href);if(!image.height||image.height>100){image.height='100'};if(!image.width||image.width>100){image.width='100'};image.setAttribute('style',stl);p.appendChild(image);}}}};},false);var th=document.getElementsByTagName('th')[2];th.appendChild(inp);th.appendChild(sf);})();


原典を数文字書き換えてBookmarklet化しただけです。あとは、何故か残っていたい不要な空白を取り除いたりとか、そのくらい。

ニコニコ動画観たい

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紹介がありますので、動作確認された方は臆せず共有しましょう。

2ch系ブログのスタイル

時折リンクを踏む度にあー、これは邪魔だ、なんて思っていたのですが、芦塚さんが素敵なユーザスタイルシートを書いてくださいました。ありがとう、使わせて貰います!!

ズーム

僕は結構頻繁にお目にかかるのだけれど、普段倍率が表示されるところにはZoomという文字が表示されることもある。全くカスタマイズじゃないのだけれど、案外こんなところをwatchしている様な人にとっては面白いのかもしれないなぁと思ったのでポストしてみる次第。

ある条件を満たせば確実に表示される、と云うのが多分ヒント。興味のある人は探してみてはいかが。ちょっとした時間つぶしくらいにはなるかもしれません。

フォームへのフォーカス

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

Firefoxライクなタブ切り替え

Opera 9.5ではキーボードショートカットがFirefox互換に刷新されているのですが、若干抜けがあります。お気づきになりましたら是非コメントしてください、というのが今回の趣旨。

たとえばAlpha版ではタブを元に戻すショートカットキーが異なっていましたが、これはBeta版でFirefox互換に修正されました。その他には一部ラップトップユーザの利用するタブ切り替え、Ctrl+PageDown/PageUpを利用することができません。このような例は他にもいくつか存在するでしょう。

ちなみにこのCtrl+PageDown/PageUpはOperaでいうところの1/2に該当しますので、以下の定義を[Application]へ追加することで同様の動作を実現できます。

PageDown ctrl=Switch to next page
PageUp ctrl=Switch to previous page


追記。Ctrl-TabでもFirefoxライクに動いてほしいということであれば、設定を変更した方がスマートです。[ツール>詳細設定>詳細設定>タブ]から、そもそものリスト表示を止めてしまえばよいでしょう。その場合、[Application]へは以下を追加した方がより適当となります。

PageDown ctrl=Cycle to next page
PageUp ctrl=Cycle to next page

asahi.comをシンプルに表示するユーザスタイルシート

asahi.comをシンプルに表示するユーザスタイルシートを半機械的に生成して数ヶ月前から使っていたのですが、概ね巧く表示してくれるようなので公開します。

asahi.com.css

ニュースサイト内でうろうろなんてしないよ、当該記事だけさっくり読んだら帰るよ、という人向けです。一応関連記事くらいは残してありますが。

なお個人的な好みでセレクタをこれでもかというほどガチガチに書いています。少しでもasahi.comの仕様が変わったらそれに気づくことが出来るでしょう。asahi.comの仕様なんて興味ないですよ、という人は適当に軽量化してください。

あ、ちなみに幅に合わせて表示させていると違和感はないものの意図した表示にはなりませんのであしからず。通な人――というか、モニタが狭くて基本的にいつでも幅が足りない人――は必要なときだけ幅に合わせて表示させるのですよ、崩れまくるから(何。