Kanasan.JS JavaScript 第5版読書会#5

相変わらず素晴らしく勉強になる読書会でした。こういう場は本当に貴重だと思います。

<script>

  • XHTML中に<script>直書きすると&などに実体参照エスケープがかかる。
    • <![CDATA[ ... ] ]>
    • CDATA の中で ] ]> という文字列を使えないので二回に分ける必要がある。
  • MIMEタイプは今後 text/javascript より application/javascript が使われるようになるかも…?
  • defer属性
    • HTML4標準なのに全然サポートされてない!!!
    • IEの「ドキュメント解析が終わった後」に実行されるという動作は非標準?
    • 本来は「実行延期されないスクリプトが読み込まれたとき」に実行されるべき。

訂正

HTML 5 の defer 属性の定義では IE の実装に合わせる形で動作が再定義されています。

Kanasan.JS JavaScript 第 5 版読書会 #5: Days on the Moon

読み込み〜実行

おおよそこんな順

  1. ドキュメントの解析
  2. defer属性つきスクリプト (IE)
  3. DOMContentLoaded (Firefox 他)
  4. 画像など読み込み
  5. onload
  6. setTimeout 0
note
  • ドキュメント解析中に document.write() するとその場に挿入されていく。
  • ドキュメント解析後に document.write() すると新たなドキュメントを作ってしまう。
  • ドキュメント解析中、その時点の <script> より前のドキュメント要素が操作できるかどうかは未定義(たいていOK)。
  • イベントハンドラはすべてのスクリプトが実行された後に呼び出されるとは限らない (たいてい大丈夫)。

ブラウザ依存系

  • 最近のFirefox は document.all が実装されているにもかかわらず if(document.all) は偽!!!!!!!!!!!!
    • こんな仕様が通る世界ってw
  • /*@cc_on ... @*/

同一出身ポリシー

  • document.domain
    • document.domain が同じ値を持つページは同一出身であるとみなされる。
    • 現在のドメインの suffix へ変更可能。
    • TLDは指定できない。
    • ne.jp とかもFirefoxでは無理(実装依存)。

その他

  • amachang×nanto_vi の間という特等席(?)
  • ゆの in ECMAScript解説
    • valueOf, toString の呼ばれ方 (数値が必要なところで valueOf が無かったら toString が呼ばれるのか!)
    • 関数toString はUnicode文字列が \u6765\u9031... という形で取得されてしまうから eval なのか!
    • エヴァが出てきたのは : が使いたかったからだったのか!
  • LTはぜんぶ面白かったです!