Fork me on GitHub

2010/03/24

はてな
もう既出感丸出しですが...
リロード如きでソケットサーバとか使うの嫌だったのでWindows API使った。

function! s:UpdateBrowser()
  python<<EOM
import win32gui,win32api,win32con
hwnd = win32gui.FindWindow("MozillaUIWindowClass", None)
hwnd = win32gui.FindWindowEx(hwnd, 0, "MozillaWindowClass", None)
win32gui.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_F5, 0)
EOM
endfunction

function! s:StartEditing()
  augroup HtmlEditing
    au!
    autocmd BufWritePost,FileWritePost *.html call s:UpdateBrowser()
  augroup END
  exec "!start c:/progra~1/mozill~1/firefox.exe " . expand('%:p')
endfunction

function! s:StopEditing()
  augroup HtmlEditing
    au!
  augroup END
endfunction

command! HtmlStartEditing call s:StartEditing()
command! HtmlStopEditing call s:StopEditing()
Windowsで、しかもFirefoxでしか動かない。「:HtmlStartEditing」で開始、「:HtmlStopEditing」で停止です。ファイルが更新される度にブラウザ(Firefox)にF5を送信します。Firefoxのパスとか適当に...
書いて5分程使ってみたけど、まぁまぁな感じ。いつかもうちょっと弄って使うかも。

同じ方法でchromeも出来るかもしれない。
Posted at 00:30 in ソフトウェア::vim
Tagged as: firefox, python, vim
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip

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開発者の皆様、頑張っていきましょう。