JavaScript 中級編の勉強を開始

JavaScript 中級編

さて、昨日までで基本のキの JavaScript の勉強を終えた。
今までちゃんとわかっていなかったタグとか CSS とかその辺りが理解できるようになったかな。
まあそれは JavaScript じゃなくて Html とか CSS だけど…。
今までどう書けばいいかは何となくわかっていて、でもどこで書けばいいのか、何ができるのかがいまいちちゃんとわかっていなかったけど、そのあたりが少しわかった気がする。
で、今日から中級編。
使うテキストはこちら。

JavaScript 中級講座 ~Ajaxを学ぶ前の基礎知識

JavaScript 中級講座 ~Ajaxを学ぶ前の基礎知識

前のテキストに比べるとようやく外で広げても恥ずかしくない感じ。
前のは正直言ってコンピュータ詳しくない人向けって感じでちょっとだけ恥ずかしかった…。
Amazon review で評価がよく、自分の目指すところ(= Chrome 拡張機能ブックマークレットが自在に書けるようになること)に近そうだったので、これに決めました。
結構分厚いけどその分面白いだろうと思うので、頑張って 1 日か 2 日ぐらいまでに終わらせられたらいいな。

突っかかったところ

Aptana Studio のプロジェクト一覧で大量のプロジェクトが並んでしまうのを避けたかったため、
/workspace/xxx/Chapter1
/workspace/xxx/Chapter2

といった階層構造にしたかったけれど、xxx というフォルダの中にプロジェクトを作成しようとしたところ、"overlaps the location of another project" と言われた。何とも conflict していない筈なんだけど。
ワークスペースを workspace/ から workspace/xxx/ にしたところ滞り無くできたけど、ワークスペースを変える必要が生じるっていうのがなんとなく腑に落ちない。
eclipse とかだと普通にプロジェクトのソースを階層構造で保管できたので、eclipse でできてこっちで出来ないというのはいったい何でだろう…と試行錯誤したところ、プロジェクトの中にフォルダは追加できた。ということで自分のやりたいことが間違っていたっぽい。
確かに考えてみたらその通りで、プロジェクトにフォルダは追加できてもその逆はおかしいよねえ。なんで最初それをやろうと思ったんだろう…。

学んだこと

XHTML と HTML は切っても切り離せない

Aptana Studio で HTML を書いていると、文の最後にスラッシュが挿入されてしまう。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

これは XHTML の記法で、HTML で書いているつもりの自分としては嫌だなー。どうにかしたいなー、と思っていた。
設定とか見てみても記法を HTML にするところが見つからないし、英語のフォーラムで同じような質問をしていた人はいたけど、「最初にファイルを作るときに XHTML 形式で作るのを選べばいいじゃん」って言われていた。でもそうすると blank file で作れないしなーっと思っていたら、
正しいHTMLを覚えよう~SEOバッチリなテンプレ使っても失敗するかもよ!|ぼくんちのバックステージ で「両者は区別が付けれない位ごっちゃになっている」と書かれていたのでちょっと気が楽になった。
なるべく正しく書きたいと思っていたけどあんまり気にしなくていいんだな。まだちょっともやもやは残るけど、まあ解決と言っていいかも。

XHTML での Script の書き方

上のとちょっと関連しているかも。知識の整理のために書いておく。
HTML では Script は CDATA の形式だったが、XHTML では #PCDATA の形式になっている。
#PCDATA の特徴はこちら。

  • HTML のコメント()は無視される。
  • 実体参照は文字に置き換えられる。
  • < はタグの開始文字として解釈される。

というわけで、HTML で書くように XHTMLJavaScript を書くと基本的には無視される。なので XHTML の形式に従って JavaScript を書くと

<script type = "text/javascript">
<![CDATA[
<!-- コード -->
]]>
</script>

となるが、頭のいいブラウザ達は HTML 形式に従った XHTML のコード上でも script が動くように解釈する結果、このような書き方だとエラーが起きるらしい…。
なので、こんな感じで書くといいらしい。

<script type = "text/javascript">
//<![CDATA[
<!-- コード -->
//]]>
</script>

ややこしいなー。