2006 | 01 | 02 | 03 | 04 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 02 | 03 | 04 | 05 | 06 | 11 | 12 |
2008 | 01 | 09 | 10 |
2009 | 01 | 02 | 03 | 06 |
2009/03/25 Wed
2009/02/12 Thu
■ Google DesktopでOperaのメールを検索対象にしたい

Google Desktop API - Google Codeを見ると
Google デスクトップを拡張して多数のファイル形式を検索
って書いてあるので対応できるんじゃないかって気がするんだけど、どうなんですかね?
いま仕事で使っているんだけど、検索が使い物にならなくてものすごく不便。先日とうとう我慢できなくなってThunderbirdにデータをエクスポートしてGDSで検索できるようにした。でもやっぱり直接読めた方が楽なのでなんとかできればいいなー。
あと、総計1GBのメールをエクスポートするとしばらく応答なしになってしまって何もできなくなるのはどうにかならないんでしょうか・・・。
2008/10/16 Thu
■ [UserJS]onload時のfocusを無効にする

// ==UserScript==
// @name kill onload focus
// @namespace http://orera.g.hatena.ne.jp/takef/
// @include *
// ==/UserScript==
(function () {
var inputFocusFunc = HTMLInputElement.prototype.focus;
var textareaFocusFunc = HTMLInputElement.prototype.focus;
opera.addEventListener('BeforeScript', function (e) {
HTMLInputElement.prototype.focus = function(){};
HTMLTextAreaElement.prototype.focus = function(){};
}, false);
document.addEventListener('load', function (e) {
setTimeout(function() {
HTMLInputElement.prototype.focus = inputFocusFunc;
HTMLTextAreaElement.prototype.focus = textareaFocusFunc;
}, 500);
}, false);
})();
Twitterのスクリプトが変更されるたびにその場しのぎで対応するのが面倒になったので、どんなサイトでも対応できるようなのを作った。
やってることは難しくなくて、スクリプトの実行前にfocusをダミーの関数に置き換えて、onloadの0.5秒後に元に戻しているだけ。
追記(2008/10/19)
いただいたコメントを元に修正しました。
// ==UserScript==
// @name kill onload focus
// @namespace http://orera.g.hatena.ne.jp/takef/
// @include *
// ==/UserScript==
(function () {
var inputFocusFunc = HTMLInputElement.prototype.focus;
var textareaFocusFunc = HTMLTextAreaElement.prototype.focus;
HTMLInputElement.prototype.focus = function(){};
HTMLTextAreaElement.prototype.focus = function(){};
document.addEventListener('load', function (e) {
setTimeout(function() {
HTMLInputElement.prototype.focus = inputFocusFunc;
HTMLTextAreaElement.prototype.focus = textareaFocusFunc;
}, 500);
}, false);
})();
edvakfvar textareaFocusFunc = HTMLInputElement.prototype.focus;
は
var textareaFocusFunc = HTMLTextAreaElement.prototype.focus;
の間違いですね。
これでやると、はてなダイアリー (例えばこのページなど) で、onload 後に focus 関数が元に戻ってないと思うのですが、再現しますか? 他のページでは大丈夫っぽいんですけど。
os0xBeforeScriptはJSONPとかの後から追加したscriptにも反応するので、はてなスターなどで「focus 関数が元に戻ってない」現象(正確には、戻した後にまた消してる現象)が起きるみたいです。
この場合、BeforeScriptを使う必要がないかなと思います。
delete で自分が定義したプロパティを消すことができるので、こんな感じにすることもできます。
HTMLInputElement.prototype.focus =
HTMLTextAreaElement.prototype.focus = Function();
window.addEventListener('load', function () {
setTimeout(function() {
delete HTMLInputElement.prototype.focus;
delete HTMLTextAreaElement.prototype.focus;
}, 500);
}, false);
edvakfos0xさんのおっしゃる方法で大丈夫そうなのですが、僕のコメントした件については下の方法で解決しましたので、お知らせしておきます。
http://d.hatena.ne.jp/Griever/20081017/1224261825
takef>edvakfさん
わ、はずかしいミスですね。ご指摘感謝。
>os0xさん
おお、確かにBeforeScriptは使う必要がないですね。
そしてJSONPのことは想定外というか忘れてました。
ありがとうございます。
ちょっと気になったんですが、delete使ってしまうと元々あったfocusが消えてしまわないですか?
それにしてもコメント入力欄が小さすぎる・・・
あとでなんとかしよう。

http://www.usopion.com/MakeOperaMailFilter.html
http://my.opera.com/usopion/blog/show.dml/2860313
ちょっと面倒だけど、精度は上がります。当社比でクイック検索の誤爆率が15%~70%が、ほぼ0%になります。
ただちょっと時間がかかるのが残念ですね。
Opera の中の人たちはまじめに多言語対応する気がないのかねー