特定のバージョンのIE検出
jQuery.browserは非推奨、jQuery.supportも正しく動作しないことがあるようなので、jQueryに頼らず機能検出によって判定する方法を検討した。IE8以上ではブラウザーモードとドキュメントモードに注意が必要。
参考までに…、IE9以上(あとOperaも)ではtypeof window.attachEventはfunctionになる。
jQuery.browserは非推奨、jQuery.supportも正しく動作しないことがあるようなので、jQueryに頼らず機能検出によって判定する方法を検討した。IE8以上ではブラウザーモードとドキュメントモードに注意が必要。
参考までに…、IE9以上(あとOperaも)ではtypeof window.attachEventはfunctionになる。
基本のコードを次に示す。ytPlayerがグローバル変数になっていることに留意し、適宜手を加えること。ytPlayerに納めたオブジェクトを利用することがないようであれば、YouTubeで発行する普通のiframe版埋め込みコードを利用すれば良い。
たとえば、AjaxによるJSONの取得を先に実行しておいて、データ取得とDOM構築が完了したらJSONを用いてデータを表示するといった場合などに利用する。jQueryのDeferredオブジェクトを利用すれば簡単に実現できる。Twitterで@Takazudoさんに実装のエッセンスを頂いた。jQuery.when() – jQuery APIも参照のこと。
なお、AjaxによるJSONの取得を先に実行すべきかどうかは検討の余地があると思う。
例えば初期状態ではリストに10個のアイテムが表示されていて、「More」や「さらに見る」を押すと次の10個のアイテムをAjaxで取得し表示するスクリプト。SlideShareのスマートフォン向けサイトで採用されているようなシステム。スマートフォン向けサイトでの利用を考えているため、jQuery Mobile 1.1.0 RC1を利用している。
jQuery 1.4より追加されているjQuery.proxy()
を使うと良さそうな場面に遭遇したので、要点のみを抜粋してストックしておく。var self = this;
のような記述がなくなりスッキリしそう。