12月 2010
4件の投稿
2タグ
Tumblr標準のj、kキー移動はLDRizeと違ってカレントの要素が外から取得出来ない(document.onkeydownハンドラのクロージャになってる)。ブラウザ拡張からだとwindowのスコープが別なため、document.onkeydownを上書きして取れるようにしようとしても変数がundefinedになってしまい上手く行かない。 やり方を変えて、別にkeydownをリッスンしてページのスクロールの高さと一致する高さのエントリーを見つけたらその要素をカレントと見なすようにした。上手く行ってるように見える(追加するイベントはonkeydownより後に実行される前提。ブラウザによって挙動が変わるかも)。 var tumblrLife = { current: 0 }; document.addEventListener('keydown', function(e)...
12月 28
4リアクション
3タグ
jstv: JavaSctipt Test Viewer
テストを書いても確認ページを用意するのが面倒だったり、Gistなどにテスト付きでコードを上げても実行出来ないのが不便だったので、コードやテストスクリプトのURLを渡すとテストページが出来上がる簡単なサービスを作りました。 jstv 今のところQUnitのテンプレートのみです。パラメータに指定したパスでscript要素を挿入してテストが走ります。例: http://jstv.codefairy.org/qunit?base=https%3A%2F%2Fgist.github.com%2Fraw%2F751419%2F;script=jquery.replaceClass.js;script=qunit.replaceClass.js アプリはGAEで動いてます。ソースはGitHubに置きました。 便利なのかよく分からないですね。短縮URL噛ませたい。
12月 27
8リアクション
2タグ
pixiv Tech MeetingでpixivのJSの話をしました
資料置いときますね。 pixiv.js -4年目のサービスをきれいにしよう- まだ全然途中なんですが、やってることやりたいことを話しました。使っているURLディスパッチャーは名前空間以外gistにあるものとだいたい同じです。URLディスパッチャーとLABjsの組み合わせはお気に入り。 LABjsとか結構危うい感じもするので、一応将来的に構成が変わっても書き換えやすいようには作ってます。 刺身さんが書いて下さったことが言いたかったのかも>< ありがとうございます。パフォーマンスよりも管理しやすいように考えていて、整理が落ち着いたらまた変えていくと思います。
12月 20
23リアクション
1タグ
非同期処理を挟むと発動するポップアップブロックへの対処方法
各ブラウザのポップアップブロック機能は普通ユーザーが起こしたイベントに対しては発動しないように作られていますが、例えば要素がクリックされると非同期でリンク先を取得してページを開くような場合、Operaを除く主要ブラウザでポップアップブロックが発動します。実際どうなるかクリックするとURLをbit.lyして別ウィンドウで開くサンプルを書いて試してみました。ちなみにわざわざ非同期でリクエストするのは負荷軽減のためです。 #0は最初からURLが分かっている場合です。非同期ではないので各ブラウザ、直接開いたと認識して問題なく動きます。参考用で今回のテストとは関係ないです。 #1はbit.lyへのJSONPリクエストを挟みました。結果を取得後にwindow.openしています。ブラウザでポップアップを許可していない場合、 IEとFirefoxはポップアップブロックが働き警告が出る ...
12月 9
16リアクション