コンテンツの終わりまで読み込むと次のコンテンツを自動的に読み込む(autoload) 【feedpost tips】

jQuery.jpg 先日リリースしたTumblr用ツール「feedpost」で採用している技術を紹介するシリーズ。 5回目はコンテンツの終わりまで読み込むと次のコンテンツを自動的に読み込む仕組み、通称「autoload」とか「autopager」とか言われている仕組みの実装です。

続きを読む

スマートフォンでのタッチアクションを実装するjQueryプラグイン「hammer」 【feedpost tips】

jQuery.jpg 先日リリースしたTumblr用ツール「feedpost」で採用している技術を紹介するシリーズ。4回目はスマートフォンでのタッチアクションを実装するjQueryプラグイン「hammer」。独立版とjQuery版とあるのだけど、その辺はお好みで。ここではjQuery版。導入はとっても簡単で、jQueryと一緒に読み込むだけ。使い方の例は例えばこんな感じ。

続きを読む

キーボードショートカットを実装するjQueryプラグイン「hotkeys」 【feedpost tips】

jQuery.jpg 昨日リリースしたTumblr用ツール「feedpost」で採用している技術を紹介するシリーズ。 2回目はキーボードショートカットを実装するjQueryプラグイン「hotkeys」。 導入はとっても簡単で、jQueryと一緒に読み込み、 イベントをキーに合わせて設定してやればOK。 フォーカスがdocumentにあるときの設定は例えばこう。 このサンプルでは「J」キーを押すと「pressed J key」というポップアップが表示されます。input欄やtextarea欄にカーソルがあるときには反応しないので、神経質になりすぎることなく設定出来ます。

続きを読む

【メモ】 callbackで「#_=_」が付いて来てしまう件への対応

このスクリプトだと引数が落ちてしまうようです。それに対応したのがこちら (続き) 【メモ】 callbackで「#_=_」が付いて来てしまう件への対応 | mutter
どういう理屈なのか解りませんが、OAuthで認証したあとのcallbackのURLの末尾に「#_=_」が付いて来てしまうことがあるようです。検索した限りではFacebookがそういう仕様のようで、Tumblrも同じような仕様です。多分、サービス側に何らかの理由があってこうなっているんだとは思うのですが、受け取る側からするとちょっと不都合があります。 例えば、
http://hoge.com/return
というURLをcallbackに指定してリクエストを投げた場合、こんな感じで返ってきます。
http://hoge.com/return?oauth_token=xxx&oauth_verifier=yyy#_=_
んで、何らかの処理をしてサイトのトップページにリダイレクトをしてやると(例はSymfony)、
$this->redirect('hoge/index')
URLはこうなってしまいます。
http://hoge.com/#_=_
本当はこうしたいのに。
http://hoge.com
もしかしたらフレームワーク側で対処出来るのかも知れませんし、ブラウザの設定なのかも知れませんが、検索して情報を収集してみた結果「JavaScriptでアドホックな対応」というのがポピュラーなようなので、とりあえずそれに従うことにしました。

続きを読む

Firefox 16とMovableType 5の組み合わせでカテゴリーが登録できない(解決済み)

Firefox

有志によるパッチが出ています。詳しくはこちらのエントリを参照して下さい。 Firefox 16を使用するとMovableTypeでカテゴリーが指定できない件の修正パッチが出ました
昨日、Firefoxのバージョンが16.0.1に上がりましたが、その際にJavaScript関連の挙動が変わったらしくて、カテゴリが指定できなくなってしまいました。カテゴリを指定して投稿しても、なにも指定されていない状態でアップされてしまうのね。
firebugでプレビューを見た限りでは、エラーが出てるのは、
  • /mt-static/js/mt_core_compact.js
で、エラー内容は、
Error: Permission denied to access property 'toString'
mt_core_compact.jsは圧縮されてて分かんないけど、「toString()」関連で言うと、この辺の記事が関係あるのかもと思ったり。 Nightly で Function.toString() の挙動が変わった – hogehoge @teramako (全然わかりませんけど。コード眺めただけで1ミリも調べてない)
→ たぶん関係ないという話が。きちんと調べずに書いた憶測なので薄くしておきますです。 僕のMovableTypeのバージョンは5.12ですが、最新の5.2でも同じらしいです。現行のFirefoxで動かないのは事実なので、しばらくはChromeで投稿することになりそう。ああ、面倒。 FirefoxかMovableTypeか、もしくはその両方かを乗り換える時期が来たって事なんでしょうかねえ……

続きを読む

[ExtJS4] コンストラクタ的な要素の呼ばれる順 【メモ】

ただのメモです。

Controllerの場合

init

It is called before the Application’s launch function is executed so gives a hook point to run any code before your Viewport is created.
Viewportがインスタンス化する前に呼ばれます。

onLaunch

A template method like init, but called after the viewport is created. This is called after the launch method of Application is executed.
Viewportがインスタンス化された後に呼ばれます。

Componentの場合

initComponent

constructor

インスタンス化されるときに実行されます。2つはほぼ同時に実行されますが、 中身が全く同じと言うことではないようです。詳細は以下のエントリ参照。 Extjs4 initComponentとconstructorの違い – 日々精進

createdFn

Optional callback to execute after the class is created, the execution scope of which (this) will be the newly created class itself.
Ext.defineの第3引数。そのクラスが生成されたあとに実行されるコールバック関数。「created」ってのはインスタンス化ではなくてファイルが読み込まれたとき…と言うような気がする(後述の実行順参照)

実行順例

  1. Component: createdFn
  2. Controller: init
  3. Component: constructor
  4. Component: initComponent
  5. Application: launch
  6. Controller: onLaunch
ややこしい…

続きを読む

$.post()のコールバックが動くのはHTTPステータスコードが2xxのとき(jQuery)

前回の続き、というか補足メモ。 jQueryで作るAjaxな検索フォーム(テスト) | mutter

JavaScript: 検索部分

function sampleSearchFilckr () {
var word = $('#sampleSearchWord').val();
if(!word) {
alert('検索語を入力してください');
return false;
}
//検索
$.post(
'/sample/flickr',
{"q": word},
function(data, status) {
//searchに成功したら結果を表示する
$('#sampleSearchResult').html(data);
},
"html"
);
}

続きを読む