javascriptで書かれたプレゼンテーション表示用ライブラリ S6 の使用メモと、Chrome2/Safari4対応

javascriptで書かれたプレゼンテーション表示用ライブラリ S6 の使い方でちょっとはまったのでそのメモと、Chrome2, Safari4への対応方法です。

取得方法

公式のレポジトリはないようで、ブログのこの記事が公開元になっているようです。

ここにS6を使ったプレゼンテーションがアップされているので、そのHTMLのソースから読み込まれているs6.jsファイルをDLすればいいのですが、このプレゼン、それぞれ別のs6.jsを参照しています。

比較した感じだと、この並びどおりに更新されているので、最新の
http://amachang.art-code.org/ejohn/dist/s6.js
を使うのがいいと思います。

使い方

基本的な使い方はこのページがわかりやすいです。
古いほうのs6を使いながらこのページ見るとはまります。いや、はまりました
古いバージョンは、styleで要素を要素名で指定するのではなく、配列で指定していた。

   s6.page({
     styles: [ {}, { fontSize: '0.8em' } ]
   })

これが新しいバージョンではこうなる。

   s6.page({
     styles: { 'p': { fontSize: '0.8em' } }
   })

使うバージョンを間違えなければ関係ないんだけど。

Chrome, Safariに対応させる

Google Chrome 2、Safari 4だと矢印キーの操作が効かなかったので、修正しました。
一行変えるだけ。

    if (s6.uai.ie && type == 'keypress') {
    if ((s6.uai.ie || s6.uai.applewebkit) && type == 'keypress') {

変更内容としては、ブラウザによってデフォルト動作のキャンセル(preventDefault)できるタイミングが、KeypressかKeydownで違ってくるらしいのでIEWebkitではArrowキーの場合onKeyPressイベントが発生しないので、Chrome2, Safari4まとめてwebkitの場合に、IEと同様Keydownでフックするようにした。

ただ、S6のもとのプレゼンにはSafari3に対応、と書いてあるのでもしかしたらSafari3だと逆に動かなくなっちゃってるかも。もしくはMac版だと違うとか。その場合はuaiでバージョンやOS毎に分けないといけないね。
MacのSafari3で動作したという報告を頂きました。

一応動作確認してるのは以下。

最後に

というわけで、Chrome2でもSafari4でも、キッチンにレシピを