JavaScriptの仕様とは?

このQ&Aのポイント
  • JavaScriptの仕様には、ECMA-262、DOM、各ブラウザ実装状況の3つがあります。
  • ナビゲーターオブジェクトはブラウザの機能を提供するオブジェクトであり、DOMの一部です。
  • DOM仕様はW3Cによって定められており、HTMLもDOMの一部です。また、WHATWGはHTMLの詳細な仕様を定義しています。
回答を見る
  • ベストアンサー

JavaScriptの仕様(ECMA-262以外)

JavaScriptの仕様について教えてください ■質問1 … 仕様の種類 ・JavaScriptの仕様は、以下3つから成立しているという認識で合っているでしょうか? 1.ECMA-262 2.DOM 3.各ブラウザ実装状況 ■質問2 … ナビゲーターオブジェクト仕様 ・ナビゲーターオブジェクトの仕様はどこにあるのでしょうか? ・ナビゲーターオブジェクト=ブラウザ? ・ナビゲーターオブジェクトは、DOMの一種? ■質問3 … 「W3C」「WHATWG」の違い ・DOM仕様はどこが定めているのでしょうか? W3C? ・HTMLはDOMの一種? ・MOZILLAで「HTML 仕様書での定義」をクリックすると、下記ページへ飛ぶのですが、このページは何ですか? ▽HTML Standard   http://www.whatwg.org/specs/web-apps/current-work/multipage/ ・ベース仕様を「W3C」が決めて、もう少し詳細を「WHATWG」が決めて、その上層のHTML5部分はまたどっか違う組織が仕様を定義している、という話なのでしょうか?

  • re97
  • お礼率80% (601/744)

質問者が選んだベストアンサー

  • ベストアンサー
  • Chaire
  • ベストアンサー率60% (79/130)
回答No.1

(1). JavaScript 1.4 以降、DOM は切り離されています。DOM 自体は言語中立な XML/HTML 用モデル&API として定義され、Java、C++、Python、PHP など各種言語で実装されています。「ブラウザの実装状況」を仕様とは言い難いと思いますが、以下に続きます。 (2). 「ブラウザの実装状況」を見ながら、ブラウザに搭載する DOM その他の仕様を固めていこう、というのが HTML Standard(HTML5)です。JavaScript 1.0 以来慣習的に扱われていた Navigator オブジェクトも、お挙げになったリンク先の 7.5.1 で再定義されています。 なお、Navigator 自体は「ブラウザ情報」を抽象化したものです。HTML Standard 以外の仕様でブラウザ情報を追加したい場合、それぞれの仕様書で Navigator を拡張している場合があります。HTML Standard でも、Navigator は NavigatorID、NavigatorLanguage、NavigatorOnLine、NavigatorContentUtils、NavigatorStorageUtils を全部合わせたものとして定義されています。 (3). (1) で書いたように、DOM は XML/HTML 用モデル、というよりむしろ XML 用モデルとして W3C が定義しました。これは、HTML が役割を終え、今後は XHTML で行こう、という目的があったからです。 ところが、色んなゴタゴタがあって XHTML への移行は失敗しました。それでも XML 路線を貫きたい W3C に対し、Apple、Mozilla、Opera などブラウザベンダが協力して 2004 年に WHATWG を立ち上げ、HTML の再出発を主張しました。HTML5 の canvas 要素などはこのときに導入されたものです。 こうした分裂状態が続き、ついに 2007 年、事実上ストップしていた W3C の XHTML 2.0 の策定が中止されます。同時に、WHATWG が策定を進めていた HTML5(このときは Web Applications 1.0、Web Forms 2.0 などの名前でしたが)が W3C 草案として提出されました。草案の策定は WHATWG が中心となって進め、定期的に W3C 草案もアップデートしていく、という二重構造です。 で、HTML5 はブラウザの実装状況を見ながら修正していく方針ですので、当初は勧告が 2022 年ぐらいだろうと言われていました(1997 年に出た HTML 4.0 のフル実装さえ、未だ存在しないことを思い出して下さい)。しかし、そのように常に現状を見つつ HTML を微調整していくのであれば、もはやバージョンに意味はありません。ということで、2011 年にはバージョン番号が廃止され、単なる「HTML」あるいは現在の「HTML Standard」という名称になりました。 とはいえ、W3C に提出してしまった草案の名前を変えるのは面倒です。なので、W3C 草案の方は名称を変えずに「HTML5」として勧告を早め(遅くとも 2014 年までには出る予定です)、今後のこと、つまり「HTML6」を出すのか出さないのか思案中、というのが現在の状況です。 繰り返しますが、HTML Standard は WHATWG が策定を進めており、日々アップデートされています。W3C 版の方は、WHATWG 版の定期的なスナップショットに過ぎません。このややこしい状況が混乱を招いたため、2012 年、仕様についての窓口は原則として HTML Standard に一本化し、それ以外についてはやりたい人がやってくれ、という形に落ち着きました。

re97
質問者

お礼

回答ありがとうございました。 大変参考になりましたー

関連するQ&A

  • javascript DOM

    javascript DOMについて DOMはドキュメントオブジェクトモデルの略だと思いますが、DOMそのものというのはブラウザ画面に映っているオブジェクトそのものという解釈で良いのでしょうか? というのもjavascriptには「document.write()」というメソッドがあると思いますがdocumentはブラウザ画面そのものを指していて、writeは書く。直訳するとブラウザ画面に書くになると思いますが DOMもdocumentはブラウザ画面、オブジェクトはブラウザに移っているオブジェクト(<input type="button">など)、モデルは良くわからないのですが HTMLの画面に映っているタグ自体はDOMと呼ぶのでしょうか?

  • DOMは、javascriptではないのでしょうか

    ある要素にアクセスする場合、 例えば、 document.form1.hoge;てしたり、 document.getElementsByName('hoge');てしたり、 jQueryを使ったりする方法があるかと思うのですが、 このgetElementsByName()メソッドは、 javascriptではないのでしょうか? 調べると、 DOMのAPIとかって、書いてあるのですが、 XMLとか、JSONみたいな、単なる仕様なのでしょうか? そうすると、PHPとかでも、getElementsByNameは使えるのでしょうか? あるいは、javascriptに特化したメソッドなのでしょうか? javascriptを書くとき、 書き方が色々あるので、 どれを選択すればよいかいつも迷うのですが、 DOMを使ってできる処理は、 一般的には、DOMで書くのでしょうか? DOMのデメリットとしては、 古いブラウザが対応してない、ぐらいしか思い浮かばないのですが、 DOMとjavascriptは対等な関係で、 使わなくてもいいけど、 使ったほうが便利、みたいな認識でいいのでしょうか? DOMでしかできない処理みたいなのはあるのでしょうか?

  • JavaScript DOMについて

    JavaScriptの勉強を始めて、1か月程度の初心者です。 JavaScriptを使って、計算したり、カレンダーを作ったり、 HTMLの要素の内容を変更させたり、削除したり、 スタイルシートのプロパティ?を変更して、背景色を変えたり、要素を移動したり、 イベントを使用したりと、出来ることは増えてきて、勉強するのが楽しくなってきたのですが、 いまだにDOM操作についていまいち理解できていません。 具体的にDOMとはどこからどこまでなんでしょうか? JavaScriptに組み込まれているオブジェクト(Date,Math、String、Array) 以外のものは、すべてDOM操作と言う事でしょうか? イベントハンドラだとか、タイマ機能?(windowオブジェクトのsetTimeout()メソッド)なども DOMと言う事でしょうか? どなたかわかりやすく説明してもらえると嬉しいです。

  • JavaScriptの全言語仕様が分かる書籍は?

    JavaScriptの全ての言語仕様が分かる書籍を探しています。 入門書的なものではなく、JavaScript言語仕様全体が 調べられ、分かりやすければ、なおGoodです。 現在までは、Tohohoさんのページを見てきました。 http://www.tohoho-web.com/js/index2.htm 優れたページですが、これでも全く歯が立たず情報が足りません。 例えば、this の意味がつかめません。 var q= this.location.serach.substring(1); ここで 変数qには、現在のURL指定が http://hogehoge/somepage.htm?x=1&y=2 の場合、 '?'以降の'x=1&y=2'がqに入る様なのです。(多分です。) C++ではthis->xで自クラスのメンバを指しますが、 JavaScriptにもこうしたオブジェクト指向の考え方があると 思われるものの、thisが何か、概念、仕様がわかりません。 こうしたJavaScript言語仕様を骨までしゃぶることのできる 書籍をご存知でしたら、紹介願います。

  • HTMLCollection、NodeList違い

    ・リンク先に「DOMのノードリスト(HTMLCollectionやNodeList)の配列化」という記述があるのですが、意味が分からないので、教えてください http://blog.livedoor.jp/eeu/archives/55316901.html 下記理解で合っているでしょうか? ・そもそも「JavaScript」と「DOM」は異なる概念 ・JavaScript… ECMAScriptに基づく ・DOM … Document Object Model Level Specificationに基づく ・JavaScript … 「オブジェクト型」「プリミティブ型」に分類可能 ・DOMオブジェクト … JavaScriptオブジェクトとは等価でない? ・NodeList … JavaScript配列オブジェクトとは等価でない? http://jibun.atmarkit.co.jp/lskill01/rensai/dom04/dom01.html ・外見上は同じに見える「NodeList」「配列オブジェクト」判断の方法は? 前後の文脈から? >HTMLCollection はノードのリスト ・NodeListとの違いは? ・リンク先は関係あるでしょうか? なぜオラクル? http://docs.oracle.com/javase/jp/7/jre/api/plugin/dom/org/w3c/dom/html/HTMLCollection.html ・もしかしてブラウザによって返す型が異なるのでしょうか? ・結局「HTMLCollection型」「NodeList型」どちらが正しいのでしょうか? あるいは同じ意味? >戻り値 >Firefox, IEはHTMLCollection型のオブジェクト >Google Chrome, OperaはNodeList型のオブジェクト http://d.hatena.ne.jp/sandai/20100823/p1

  • 外部JavaScriptのエラー

    外部JavaScriptのファイルを開くときに、「'document'は宣言されていません」と表示されてしまいます。 どうしたら解決できるでしょうか。 JavaScriptに関しては初心者です。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> 適用されるページはこのように宣言していますが、ここに問題があるのでしょうか。 回答お願いします。

  • JavaScriptのthisについて

    はじめまして。 質問があります。 例えば、JavaScriptのthisとは、参照中のオブジェクトであると参考書 に書かれているのですが、JavaScriptでいうオブジェクトとは、何を指 すものなのでしょうか、参照書のサンプルをみてみると、thisを指定し ている場所はHTMLフォームなどの中であったりします。ということは、 HTMLフォームはオブジェクトの一つであるとみなすべきなのでしょうか?いまいちthisの使い方がよくわかりません。どうかご教授 お願いします。

  • 宣言文とjavascript

    javascriptでチップヘルプを表示させています。 文字にマウスが乗れば説明文が表示されるものです。 こちらの宣言文を <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 下記のもの <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> に変更すると、チップヘルプが上手く表示されません。 指定した位置より、かなり離れてしまいます。 ブラウザ別(IEとFirefox)で確認したところ、Firefoxでは表示もされないようになります。 こちらを解消する方法はあるのでしょうか?

  • javascript イベント属性

    javascriptには、イベント属性としてondblclickや、onkeydown等があると思います。 W3CのDOM HTML(アドレス:http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html) 内で見つけることが出来ませんでした。 ⇒click、select、focusという用語は、見つけたのですが、メソッドなので違うと思っています。 onclick、ondblclick、onkeypress等のイベント属性の情報を調べるために、 W3CのHPを見るということ自体が間違っているのでしょうか? ※Eventのほうも見てみましたが、 http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-eventgroupings-keyevents ⇒onclickではなく、clickだったので分からなくなっています。 javascriptには、イベント属性としてondblclickや、onkeydown等のイベント属性に対する情報は どこで調べることが出来るのでしょうか。 ご教授お願いします。

  • JavaScriptについて質問です。

    JavaScriptの言語コアと呼ばれるものは 1.Array 2.Date 3.Math 4.String 5.Function 6.Boolean 7.Number 8.RegExp の上記8つのクラス(正確には、コンストラクタ呼び出しが可能な組み込み済みの関数オブジェクト)のことをいっているという認識でよいのでしょうか? 例えばブラウザでのクライアントJavaScriptの場合は、上記組み込み関数オブジェクトに加えてwindowオブジェクトと呼ばれる 組み込み済み?のホストオブジェクトがありますよね? 現在、わたくしの方では [ブラウザ用途の場合、windowオブジェクトを主に用いて、処理をおこなってくださいね。 ただ、拡張が必要な場合は上記8つの組み込みクラス(関数オブジェクト)を用いて拡張してくださいね。] という扱いという認識をしています。 つまりJavaScriptの正確な仕様は上記の8つの組み込みクラスのみであって しかし、現実に上記だけでは何の処理もかけないため併せて、各プラットフォーム側で独自拡張したグローバルオブジェクト(ホストオブエジェクト)が 組み込まれる。 ブラウザだとwindow nodejsだとそのままglobalというホストオブジェクトが存在しますよね。 上記の内容であやまっている箇所があれば、指摘して頂き、ただしてほしいのです。 Javascriptにお詳しいかたよろしくご教授ください。

専門家に質問してみよう