Fork me on GitHub

2010/03/01

はてな
といっても、やってもらったのですが!
勝手に改造版 Google Reader Full Feed - Firefox更新情報Wikiブログ

以前のエントリーで、GreasemonkeyスクリプトのGoogle Reader Full FeedがFirefox 3.6(Beta)では正しく動作しないことを書きましたが、どうにかならないかなぁと思いスクリプトをいじって試行錯誤してみたら動作するようになったので、その改造版を載せておきますね。

http://fxwiki.blog63.fc2.com/blog-entry-237.html
すみません。遅くなりました。
ありがたくcommitさせて頂きました。codereposにあるので手動で入れる方はココから。Wescript使ってる人は、勝手にアップデートされると思います。

2009/07/30

はてな
こまったねー。
例えば、divにclickとdblclickを両方割り当てた場合、「トンッ、トントン!」とクリックとダブルクリックを発生させた場合
  • Firefox/Google Chromeだと「トントン」で2クリックが発生
  • IEだと「トントン」では1クリックしか発生しない
なんて動きになってる。以下検証に使ったコード。
<html>
<head>
<script type="text/javascript">
(function() {
  var reg = function(e, t, f) {
    if (window.attachEvent)
      e.attachEvent('on'+t, f);
    else
      e.addEventListener(t, f, false);
  };

  reg(window, 'load', function(e) {
    var c1 = 0, c2 = 0;
    var panel = document.getElementById('click-panel');

    var updateStatus = function() {
      panel.innerHTML = "click:" + c1 + " dblclick:" + c2;
    };

    reg(panel, 'click', function() { c1++; updateStatus() });
    reg(panel, 'dblclick', function() { c2++; updateStatus() });
    reg(panel, 'mouseout', function() { c1 = c2 = 0; updateStatus() });
    updateStatus();
  });
})();
</script>
</head>
<body>
<div id="click-panel" style="background: blue; width: 600; height: 300"></div>
<body>
</html>
例えば、図を描きたい場合にクリックで多角形を描き、ダブルクリックで完了なんてユーザインタフェースは良くある話。
上の例で言えば
  • Firefox/Google Chromeは「click:3 dblclick:1」
  • IEだとは「click:2 dblclick:1」
なにそれ。前回クリックした時の(new Date).getTime()覚えておいて一定間隔以上でクリック発生...なんてコード、簡単だけど書きたくないよ。(ノД`)ウワーン

2008/05/02

はてな
vimperator otsuneさんが以前、「Firefox 3.0b5とvimperator0.6とAutoPagerizeとLDRizeとMinibufferとldr_cooperation.jsを組み合わせると快適過ぎる - otsune's SnakeOil - subtech」で紹介していたvimperator、もうインストールしてしまった人はいるだろうか。
まだインストールしていない人は、今後vimperaorでウェブブラウジングが実際にどの様に変っていくかが知りたいかと思います。
Firefoxをvimぽくする拡張、vimperatorを入れると、まさしくFirefoxがvimぽくなる。このぽくが重要。vimのままを期待している人は拍子抜けするかもしれない。でも、キーボードしか触りたくないユーザにとってvimperatorは心地よい操作感を与えてくれると思います。
一般的な使い方は「ナレッジエース - Firefoxをキーボード操作できるプラグイン「Vimperator」の使い方」が参考になるかと思います。
ここでは通常のウェブブラウジング以外の操作がどの様に変るかをご紹介したいと思います。
例えば通常以外の操作を以下の様に大別してみます。
  • Googleでの検索
  • ソーシャルブックマークへポスト
  • twitter
  • はてなスター

Googleでの検索

vimperatorではテキスト選択もキーボードで行う。「i」を押してキャレットが表示されるので「hjkl」で移動したり「0」や「$」で行頭や行末に、「gg」や「G」でページの先頭やページの末尾に移動する。選択したくなったら「v」を押して選択モードに移り、同じく「hjkl」等で移動後「y」でyank(コピーの意味)出来ます。 さらに単語を検索もキーボードで。例えば上のGoogle検索結果で「firefox」を検索するならば
/firefox<ENTER>
と入力します。「firefox」という単語がハイライトされvimの様に「n」で次の検索単語へジャンプ出来る。リンクの上までジャンプし「ENTER」を押すとリンク先にもジャンプ出来ます。
そして肝心な検索ですが、vimperatorには既に数多くのpluginが作られており、その中の一つに「googlesuggest.js」があります。
この「googlesuggest.js」を使えば先ほどyankした単語を簡単に検索出来ます。
:google <s-insert><ENTER>
「<s-insert>」はSHIFTを押しながら「INSERT」キー。「<c-v>」(CTRLを押しながらvでもok) とすればGoogleの検索結果が出来ます。ただ、そこまでしなくても「googlesuggest.js」を使えば
:google fire<tab>
とすれば
:google firefox
と補完してくれます。
「googlesuggest.js」はcodereposからダウンロード出来るので「~/.vimperator/plugin」(Windowsなら「%USERPROFILE%¥vimperator¥plugin¥」)にコピーすれば完了(ブラウザ再起動「:restart」が必要)。

ソーシャルブックマークへのポスト

これもvimperator pluginで行う。使うのは「direct_bookmark.js」でインストール方法は「googlesuggest.js」と同じ。
ブックマークしたいページを見付けたら
:sbm
タグやコメントを付けたいならば「はてな方式」で
:sbm [vimperator]それvimperatorで出来るよ
といった感じに。現状既に「はてなブックマーク」、「del.icio.us」、「livedoor clip」に対応しています。タグは補完が可能でサーバからタグ一覧を再取得するには
:btags
さらにブックマークエントリページに行きたいならば
:bentry
「:bentry h」で「はてなブックマーク」に...といった感じ

twitter

twitterは「twitter.js」を使う。
:twitter
とすればfollowerのステータスが表示されます。
vimperator-twitter
ステータスを更新したければ
:twitter 声が小さい!おいっす!
とでもすればいい。

はてなスター

「hatenaStar.js」を使う。使い方は
:hatenastar
現状豪快仕様プラグインでページ内の全ての「はてなスター」をクリックする為、「はてなスター」がいっぱい付いたページで実行するとエライ事になるので注意。
既にid:retletさんがやってしまってますが...
一応、何番目の「はてなスター」かを引数でも指定出来るので
:hatenastar 1
とかしとくとブラウザが爆発する心配もありません。

その他、色んなvimperator pluginがあるので興味ある方は試してみてはどうでしょうか。
coderepos にあるvimperator plugin
また「ldr_cooperation.js」を使えばgreasemonkeyのminibufferと共存する事も出来るので、キーボードだけでブラウザを操作したい人には「ウマー」な環境が出来上がるかと思います。

Firefox 3のリリース時に、「えっvimperatorで出来ないの?」なんて事にならない様、vimperator plugin開発者の皆様、頑張っていきましょう。

2008/03/25

はてな
最近私もFirefox3を使い始めたのですが、Operator 0.9.1と組み合わせると、microformatsが「hCard」と「adr」だけになってしまい、少し困ってました。 何かのバグにしてはエラーコンソールに何も出ないし悩んでいたのですが、今日ソースを見て納得。
Firefox3からは、ブラウザ自身でmicroformatsを解析出来る仕組みが入ったのですが、その対応がOperatorに中途半端に入っている様です。
chromeからmicroformatsを扱う為には
Components.utils.import("resource://gre/modules/Microformats.js");
というコードが必要なのですが、この処理がコメントアウトされていました。
実際には
$(FIREFOX_PROFILE)/extensions/{95C9A302-8557-4052-91B7-2BB6BA33C885}/chrome/operator.jar
に含まれる
content/operator.js
が原因で、パッチで表すならば以下の様な感じ。
--- chrome/content/operator.js.orig Wed Mar 19 11:44:26 2008
+++ chrome/content/operator.js  Tue Mar 25 19:11:01 2008
@@ -77,7 +77,7 @@
     /* Attempt to use the Microformats module if available (Firefox 3) */
     if (Components.utils.import) {
       try {
-//        Components.utils.import("resource:///modules/Microformats.js");
+        Components.utils.import("resource:///modules/Microformats.js");
       } catch (ex) {
         /* Unable to load system Microformats - use builtin */
       }
おしいなぁ...作者。もしくは開発時はバギーだったかな?
実際の作業としては「operator.jar」を解凍し上記パッチを当てた(もしくは手編集)後に再度zip(拡張子jar)化すればOK。見事以前までのmicroformat Operatorが帰ってきました。
相変わらずウチのサイトはmicroformatsだらけですが...
bigsky-microformats-20080325

ところでFirefox3で扱えるmicroformats、「Describing microformats in JavaScript - MDC」を見るとどうやら自前でmicroformatの定義が出来る様です。今後draftとして拡張されていくであろうmicroformatsへの配慮ですかね。せっかくmicrosummaryのOperatorプラグイン作ってたのに、こっちの方向で作り直しか?

で、さらにドキュメントの例を見ていると
var adr_definition = {
  mfVersion: 0.8,
  mfObject: adr,
  className: "adr",
  properties: {
    "type" : {
      plural: true,
      types: ["work", "home", "pref", "postal", "dom", "intl", "parcel"]
    },
    "post-office-box" : {
    },
    "street-address" : {
      plural: true
    },
    "extended-address" : {
    },
    "locality" : {
    },
    "region" : {
    },
    "postal-code" : {
    },
    "country-name" : {
    }
  }
};
という記述が...。これOperatorのソースコードのままだね。ってことはOperatorのソースをFirefox3に持ってったのかな?
とにかく簡単に拡張出来そうな仕組みなので、しばらく追ってみる。
Posted at 20:39 in web | WriteBacks (0)
Tagged as: firefox, firefox3, microformats, operator
Bookmarks: このエントリーのtweets add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip | add to buzzurl add to buzzurl | add to fc2bookmark add to fc2bookmark | add to Yahoo Bookmark add to Yahoo Bookmark | add to Pookmark add to Pookmark