Skip navigation.

exploreopera

| Help

Sign up | Help

Kuruman Log

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

target='_blank'を殺すもっとも素直な方法

根こそぎ取り去りたいならUserJSでやるしかないわけで、その方法は以前にもいくつかメモした通り。現在は使っていないのですけどね。

単純にtarget="_blank"属性の付いたリンクを潰したいのであれば、IgnoreTargetにチェックを入れるのが常套手段です。もちろんUserCSSで潰せば必要なときにtarget="_blank"を付与できるという利点があるのでどちらが良いとは一概に言えません。ちなみに私だったらtargetはすべて潰してブックマークレットで自分の意図する外部へのリンクにすべてtargetを付与すると思います。

なんてことをedvakfさんのグローバルなユーザーCSSいくつかを読みながら思いました。しかし、
Operaではブロックした要素は読み込まなくなるらしい。
ってのは知りませんでした……。

ついでに。

カタカナ語はあまり好きではないのだけど、「グローバルなユーザーCSS」以外に良い訳が思いつかない。良い訳がある人は教えてください


思いついたものを列挙しておきます。

  • 選択式ユーザーCSS
  • ユーザーCSS (先の記事中の1の方がGlobalなので)
  • ハックしてる方のユーザーCSS :hat:


どっかの辞書サイトを使うためのJavaScript断片

企業によってあえていたちごっことなるのが分かっている茨の道を選択する場合もあるようで、私には理解に苦しむ場面があります。今回の辞書サイトもその一つ。Web上で公開されている以上、それが活用されることを防ぐのは困難なわけで、使われる側は意図せぬ利用を見込んだ戦略を練る方が自然だと思うんですけどね。

javascript:location.href='http://eow.alc.co.jp/'+'%s'.replace(/\+/g,' ')+'/UTF-8/'


ArtSaltさんあたりはこれを検索URIとして使えばよいと思う次第です。

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さんが書いてたので、皆さんそれを使えばよいのではないでしょうか。はい。