From 582025021017c11b128879cbfa45c0e50997cd7f Mon Sep 17 00:00:00 2001 From: atyamash Date: Fri, 4 Mar 2022 18:27:55 +0900 Subject: learn/javasrcipt/client-side_webapis 内の英単語の前後に空白を追加 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learn/javascript/client-side_web_apis/index.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'files/ja') diff --git a/files/ja/learn/javascript/client-side_web_apis/index.html b/files/ja/learn/javascript/client-side_web_apis/index.html index 2335c02956..f0d4f7740e 100644 --- a/files/ja/learn/javascript/client-side_web_apis/index.html +++ b/files/ja/learn/javascript/client-side_web_apis/index.html @@ -19,11 +19,11 @@ translation_of: Learn/JavaScript/Client-side_web_APIs ---
{{LearnSidebar}}
-

Web サイトやアプリケーション用にクライアント側のJavaScriptを書いていると、すぐにアプリケーションプログラミングインターフェース (Apprication Programming Interfaces、API) にでくわします。API とはブラウザやサイトが動作している OS の様々な面を操作したり、他の Web サイト、サービスから取得したデータを操作するためのプログラムされた機能です。このモジュールでは API とは何か、開発作業の中でよく見かける最もよく利用される API のいくつかについて、どのように使うかを説明していきます。

+

Web サイトやアプリケーション用にクライアント側の JavaScript を書いていると、すぐにアプリケーションプログラミングインターフェース (Apprication Programming Interfaces、API) にでくわします。API とはブラウザやサイトが動作している OS の様々な面を操作したり、他の Web サイト、サービスから取得したデータを操作するためのプログラムされた機能です。このモジュールでは API とは何か、開発作業の中でよく見かける最もよく利用される API のいくつかについて、どのように使うかを説明していきます。

前提条件

-

このモジュールをよく理解するためには、ここまでの一連のJavaScriptに関するモジュール (First steps, Building blocksJavaScript objects) の学習をすませているべきです。これらのモジュールでは大抵簡単な API を使っていますが、その助けなしにクライアント側の JavaScript を書き上げるのは難しいからです。このチュートリアルの中では、JavaScript 言語のコア部分については十分理解しているものとして、よく使われる Web API についてもう少し詳しく探っていきます。

+

このモジュールをよく理解するためには、ここまでの一連の JavaScript に関するモジュール (First steps, Building blocksJavaScript objects) の学習をすませているべきです。これらのモジュールでは大抵簡単な API を使っていますが、その助けなしにクライアント側の JavaScript を書き上げるのは難しいからです。このチュートリアルの中では、JavaScript 言語のコア部分については十分理解しているものとして、よく使われる Web API についてもう少し詳しく探っていきます。

HTMLCSS に関する基礎知識も役に立つでしょう。

@@ -35,17 +35,17 @@ translation_of: Learn/JavaScript/Client-side_web_APIs
Web API の紹介
-
まずはAPIを高い視点から見ていきます — これは何なのか、どう働くのか、あなたのコードでどう使うのか、どういう風に作られているのか? また様々なクラスのAPIが何なのか、どんな使い方があるのかも見ていきます。
+
まずは API を高い視点から見ていきます — これは何なのか、どう働くのか、あなたのコードでどう使うのか、どういう風に作られているのか? また様々なクラスの API が何なのか、どんな使い方があるのかも見ていきます。
文章の操作
-
Webページやアプリを書く場合に、最も多く必要になるのはWeb文書をどうかして操作する事でしょう。これは普通ドキュメントオブジェクトモデル(Document Object Model、DOM)、これはHTMLとスタイルに関する情報を{{domxref("Document")}}オブジェクトを使いまくって操作するための一連のAPIです、を用いて行ないます。この記事では、DOMの使い方を詳しく見ながら、面白い方法であなたの環境を変える事ができる興味深い他のAPIもいくつか見ていきます。
+
Web ページやアプリを書く場合に、最も多く必要になるのは Web 文書をどうかして操作する事でしょう。これは普通ドキュメントオブジェクトモデル(Document Object Model、DOM)、これは HTML とスタイルに関する情報を {{domxref("Document")}} オブジェクトを使いまくって操作するための一連の API です、を用いて行ないます。この記事では、DOM の使い方を詳しく見ながら、面白い方法であなたの環境を変える事ができる興味深い他の API もいくつか見ていきます。
サーバからのデータ取得
-
また別に、モダンなWebサイトやアプリケーションでしょっちゅう必要になるのは、サーバから個々のデータを取ってきて、新しいページ全体を読んでくることなしに、ページの一部を書き換える事です。この一見ちょっとした事が、サイトのパフォーマンスや振舞いに巨大なインパクトを与えました。この記事ではそのコンセプトを解説し、これを可能にした技術{{domxref("XMLHttpRequest")}}とFetch APIについて見ていきます。
+
また別に、モダンな Web サイトやアプリケーションでしょっちゅう必要になるのは、サーバから個々のデータを取ってきて、新しいページ全体を読んでくることなしに、ページの一部を書き換える事です。この一見ちょっとした事が、サイトのパフォーマンスや振舞いに巨大なインパクトを与えました。この記事ではそのコンセプトを解説し、これを可能にした技術 {{domxref("XMLHttpRequest")}} と Fetch API について見ていきます。
サードパーティ API
-
これまでに説明したAPIはブラウザに組込まれていますが、全てのAPIが組込まれているのではありません。グーグルマップやTwitter、Facebook、ペイパルなど、多くの巨大なWebサイトやサービスが、開発者に対して彼らのデータを利用したり(例:あなたのブログにtwitterのタイムラインを表示させる)、サービスを利用したり(例:あなたのサイトに独自のグーグルマップを表示したり、あなたのサービス利用者にFacebookでログインできたり)するためのAPIを提供しています。この記事ではブラウザAPIとサードパーティAPIの違いを見ていき、典型的な後者の使い方をお見せします。
+
これまでに説明した API はブラウザに組込まれていますが、全ての API が組込まれているのではありません。グーグルマップや Twitter、Facebook、ペイパルなど、多くの巨大な Web サイトやサービスが、開発者に対して彼らのデータを利用したり(例:あなたのブログに twitter のタイムラインを表示させる)、サービスを利用したり(例:あなたのサイトに独自のグーグルマップを表示したり、あなたのサービス利用者に Facebook でログインできたり)するための API を提供しています。この記事ではブラウザ API とサードパーティ API の違いを見ていき、典型的な後者の使い方をお見せします。
絵を描く
-
ブラウザにはグラフィックを描くためのとても強力なツールがいくつか組込まれています。SVG(Scalable Vector Graphics)言語から、HTMLの{{htmlelement("canvas")}}キャンバス要素に描画するためのAPIまで (キャンバスAPIWebGLを参照)。 この記事ではキャンバスAPIへの導入を説明し、もっと深く学習していくためのリソースをご紹介します。
+
ブラウザにはグラフィックを描くためのとても強力なツールがいくつか組込まれています。SVG(Scalable Vector Graphics) 言語から、HTML の {{htmlelement("canvas")}} キャンバス要素に描画するための API まで (キャンバス API WebGLを参照)。 この記事ではキャンバス API への導入を説明し、もっと深く学習していくためのリソースをご紹介します。
動画と音声の API
-
HTML5には文書にリッチなメディアを埋め込むための要素が備わっています — {{htmlelement("video")}} と {{htmlelement("audio")}} — それぞれに再生やシークなどの操作するための独自APIを備えています。この記事では独自の再生操作パネルを作成するような、よくある仕事をどうやればいいのかお見せします。
+
HTML5 には文書にリッチなメディアを埋め込むための要素が備わっています — {{htmlelement("video")}} と {{htmlelement("audio")}} — それぞれに再生やシークなどの操作するための独自 API を備えています。この記事では独自の再生操作パネルを作成するような、よくある仕事をどうやればいいのかお見せします。
クライアント側でのデータ保存
-
モダンなブラウザには、Webサイトに関するデータを保存し必要なときに取り出すための様々に異なる技術が実装されており、これを使ってデータを長期間保存したり、サイトをオフラインに保存したりなどなどができます。この記事ではこれらがいかに動作するのか、その基本の基本について説明します。
+
モダンなブラウザには、Web サイトに関するデータを保存し必要なときに取り出すための様々に異なる技術が実装されており、これを使ってデータを長期間保存したり、サイトをオフラインに保存したりなどなどができます。この記事ではこれらがいかに動作するのか、その基本の基本について説明します。
-- cgit v1.2.3-54-g00ecf From d132914ab964aec5d9394d7e11725ef5d1ce339d Mon Sep 17 00:00:00 2001 From: atyamash Date: Sat, 5 Mar 2022 17:12:02 +0900 Subject: learn/javascript/client-side_web_apis/introduction の英単語の前後に半角空白を追加 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client-side_web_apis/introduction/index.html | 32 +++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'files/ja') diff --git a/files/ja/learn/javascript/client-side_web_apis/introduction/index.html b/files/ja/learn/javascript/client-side_web_apis/introduction/index.html index 51db397a58..20ff345db3 100644 --- a/files/ja/learn/javascript/client-side_web_apis/introduction/index.html +++ b/files/ja/learn/javascript/client-side_web_apis/introduction/index.html @@ -18,13 +18,13 @@ translation_of: Learn/JavaScript/Client-side_web_APIs/Introduction
{{NextMenu("Learn/JavaScript/Client-side_web_APIs/Manipulating_documents", "Learn/JavaScript/Client-side_web_APIs")}}
-

まずはAPIを高い視点から見ていきます — これは何なのか、どう働くのか、あなたのコードでどう使うのか、どういう風に作られているのか? また様々なクラスのAPIは何なのか、どのような使い方があるのかも見ていきます。

+

まずは API を高い視点から見ていきます — これは何なのか、どう働くのか、あなたのコードでどう使うのか、どういう風に作られているのか? また様々なクラスの API は何なのか、どのような使い方があるのかも見ていきます。

- + @@ -46,7 +46,7 @@ translation_of: Learn/JavaScript/Client-side_web_APIs/Introduction

それと同じことで、そうですね、例えば3次元グラフィックのプログラムを JavaScript や Python のような高レベル言語で書かれた API を使ってやる方が、C や C++ のような低レベル言語から直接コンピューターの GPU やグラフィック機能を叩いてやるよりも、ずっと簡単です。

-

注記: API という語についてもっと詳しいことは APIの用語解説 を参照して下さい。

+

注記: API という語についてもっと詳しいことは API の用語解説 を参照して下さい。

クライアントサイド JavaScript での API

@@ -89,13 +89,13 @@ translation_of: Learn/JavaScript/Client-side_web_APIs/Introduction -

一般的なサードパーティAPI

+

一般的なサードパーティ API

サードパーティ API はバラエティーに富んでいます。あなたが遅かれ早かれ使うようになりそうな、世間でよく使われているものには以下のようなものがあります:

@@ -104,19 +104,19 @@ translation_of: Learn/JavaScript/Client-side_web_APIs/Introduction
  • MapquestGoogle Maps API のような地図の API は、あなたのWebページ上に地図を使ったあらゆる事を可能にします。
  • Facebook APIスイートによって Facebook エコシステムの様々な部品を使ってあなたのアプリを強化できます。例えばアプリへのログインを Facebook のログインで行なったり、アプリ内での支払い、ターゲット広告を出したりなどです。
  • Telegram APIs  を使用すると、ボットのサポートに加えて、Telegram チャネルのコンテンツを Web サイトに埋め込むことができます。
  • -
  • YouTube APIを使ってあなたのサイトに YouTube のビデオを埋め込んだり、YouTube を検索したり、プレイリストを作成したりなどなどできます。
  • +
  • YouTube API を使ってあなたのサイトに YouTube のビデオを埋め込んだり、YouTube を検索したり、プレイリストを作成したりなどなどできます。
  • Pinterest API は、Pinterest のボードとピンを管理して Web サイトに含めるためのツールを提供します。
  • Twilio APIはあなたのアプリで音声・ビデオ電話の機能を作成したり、SMS/MMSを送信したりなどするためのフレームワークを提供します。
  • Mastodon API を使用すると、Mastodon ソーシャルネットワークの機能をプログラムで操作できます。
  • -

    注記: サードパーティAPIについては Programmable Web API directoryでもっと多くの情報を見られます。

    +

    注記: サードパーティ API については Programmable Web API directory でもっと多くの情報を見られます。

    -

    APIはどのように動作する?

    +

    API はどのように動作する?

    -

    異なるJavaScript APIはそれぞれに違う方法で動作しますが、普通は、共通した機能とどのように動くべきかの類似したテーマを持ちます。

    +

    異なる JavaScript APIはそれぞれに違う方法で動作しますが、普通は、共通した機能とどのように動くべきかの類似したテーマを持ちます。

    オブジェクトに基づいています

    @@ -207,21 +207,21 @@ volumeSlider.addEventListener('input', function() {

    認識できる入口があります

    -

    APIを使うときは、その API の入口がどこなのかしっかり確認するべきです。Web Audio APIではとても単純でした — それは {{domxref("AudioContext")}} オブジェクトであり、あらゆる音声操作を行うために使用する必要があります。

    +

    API を使うときは、その API の入口がどこなのかしっかり確認するべきです。Web Audio API ではとても単純でした — それは {{domxref("AudioContext")}} オブジェクトであり、あらゆる音声操作を行うために使用する必要があります。

    -

    Document Object Model (DOM) API でも単純な入口があります — これの機能は{{domxref("Document")}} もしくは何らかの方法で影響を与えたい いHTML 要素のインスタンスにぶらさがっている場合が多く、例えば:

    +

    Document Object Model (DOM) API でも単純な入口があります — これの機能は {{domxref("Document")}} もしくは何らかの方法で影響を与えたい HTML 要素のインスタンスにぶらさがっている場合が多く、例えば:

    const em = document.createElement('em'); // create a new em element
     const para = document.querySelector('p'); // reference an existing p element
     em.textContent = 'Hello there!'; // give em some text content
     para.appendChild(em); // embed em inside para
    -

    Canvas API は、諸々を操作するために使用するコンテキストオブジェクトの取得にも依存していますが、この場合は、音声コンテキストではなく描画コンテキストです。そのコンテキストオブジェクトは、描画をしたい {{htmlelement("canvas")}} 要素への参照を取得して、 これの{{domxref("HTMLCanvasElement.getContext()")}} メソッドを呼ぶと作成されます:

    +

    Canvas API は、諸々を操作するために使用するコンテキストオブジェクトの取得にも依存していますが、この場合は、音声コンテキストではなく描画コンテキストです。そのコンテキストオブジェクトは、描画をしたい {{htmlelement("canvas")}} 要素への参照を取得して、 これの {{domxref("HTMLCanvasElement.getContext()")}} メソッドを呼ぶと作成されます:

    const canvas = document.querySelector('canvas');
     const ctx = canvas.getContext('2d');
    -

    キャンバスを使って何かやろうとする場合は何でも、コンテキストオブジェクト (これは{{domxref("CanvasRenderingContext2D")}} のインスタンスです) のプロパティやメソッドを呼んで行ないます。例えば:

    +

    キャンバスを使って何かやろうとする場合は何でも、コンテキストオブジェクト (これは {{domxref("CanvasRenderingContext2D")}} のインスタンスです) のプロパティやメソッドを呼んで行ないます。例えば:

    Ball.prototype.draw = function() {
       ctx.beginPath();
    @@ -238,7 +238,7 @@ const ctx = canvas.getContext('2d');

    すでに学習コース中でイベントについてはお話しています、イベントの紹介 — この記事でクライアント側 Web イベントとは何か、コードの中でどのように使えるのか詳しく見てきました。もしまだクライアント側 WebAPI の仕組みがよくわからいなら、この先に進む前に記事を読み直しておく方が良いでしょう。

    -

    イベントを持たないWebAPIもありますが、ほとんどの WebAPI はいくつか持っています。イベントが発火した際に関数を実行できるイベントハンドラーのプロパティについては、リファレンス記事の独立した"イベントハンドラー"セクションとしておおよそ列挙されています。

    +

    イベントを持たない WebAPI もありますが、ほとんどの WebAPI はいくつか持っています。イベントが発火した際に関数を実行できるイベントハンドラーのプロパティについては、リファレンス記事の独立した"イベントハンドラー"セクションとしておおよそ列挙されています。

    上記の Web Audio API の例では、すでにいくつかのイベントハンドラーが使用されています。

    @@ -270,7 +270,7 @@ request.onload = function() {

    WebAPI 機能は JavaScript や他の Web 技術と同等のセキュリティ上の配慮が必要です (例えば same-origin ポリシー) が、追加のセキュリティ機構が必要な場合もあります。例として今時の WebAPI の中に はHTTPS で配信されるページ上でしか動かないものがあり、これは機密とすべきデータをやりとりする可能性があるためです (ServiceWorkersPush など)。

    -

    さらには、ある種のWebAPIへの呼び出しがあなたのコードにあると、ユーザに対してそれの許可を要求します。例えば、Notifications API (通知 API) はポップアップのダイアログボックスを用いて許可を要求します:

    +

    さらには、ある種の WebAPI への呼び出しがあなたのコードにあると、ユーザに対してそれの許可を要求します。例えば、Notifications API (通知 API) はポップアップのダイアログボックスを用いて許可を要求します:

    -- cgit v1.2.3-54-g00ecf From 7b582dd1d008c1daee40ac27dd2f72b067438652 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Fri, 25 Feb 2022 00:44:22 +0900 Subject: Web/API/Node 以下のプロパティの文書を移行 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/childnodes/index.html | 101 -------------------- files/ja/web/api/node/childnodes/index.md | 101 ++++++++++++++++++++ files/ja/web/api/node/firstchild/index.html | 46 --------- files/ja/web/api/node/firstchild/index.md | 46 +++++++++ files/ja/web/api/node/lastchild/index.html | 28 ------ files/ja/web/api/node/lastchild/index.md | 28 ++++++ files/ja/web/api/node/nextsibling/index.html | 87 ----------------- files/ja/web/api/node/nextsibling/index.md | 87 +++++++++++++++++ files/ja/web/api/node/nodename/index.html | 102 -------------------- files/ja/web/api/node/nodename/index.md | 102 ++++++++++++++++++++ files/ja/web/api/node/nodetype/index.html | 88 ------------------ files/ja/web/api/node/nodetype/index.md | 88 ++++++++++++++++++ files/ja/web/api/node/nodevalue/index.html | 81 ---------------- files/ja/web/api/node/nodevalue/index.md | 81 ++++++++++++++++ files/ja/web/api/node/ownerdocument/index.html | 66 ------------- files/ja/web/api/node/ownerdocument/index.md | 66 +++++++++++++ files/ja/web/api/node/parentelement/index.html | 46 --------- files/ja/web/api/node/parentelement/index.md | 46 +++++++++ files/ja/web/api/node/parentnode/index.html | 47 ---------- files/ja/web/api/node/parentnode/index.md | 47 ++++++++++ files/ja/web/api/node/previoussibling/index.html | 42 --------- files/ja/web/api/node/previoussibling/index.md | 42 +++++++++ files/ja/web/api/node/textcontent/index.html | 113 ----------------------- files/ja/web/api/node/textcontent/index.md | 113 +++++++++++++++++++++++ 24 files changed, 847 insertions(+), 847 deletions(-) delete mode 100644 files/ja/web/api/node/childnodes/index.html create mode 100644 files/ja/web/api/node/childnodes/index.md delete mode 100644 files/ja/web/api/node/firstchild/index.html create mode 100644 files/ja/web/api/node/firstchild/index.md delete mode 100644 files/ja/web/api/node/lastchild/index.html create mode 100644 files/ja/web/api/node/lastchild/index.md delete mode 100644 files/ja/web/api/node/nextsibling/index.html create mode 100644 files/ja/web/api/node/nextsibling/index.md delete mode 100644 files/ja/web/api/node/nodename/index.html create mode 100644 files/ja/web/api/node/nodename/index.md delete mode 100644 files/ja/web/api/node/nodetype/index.html create mode 100644 files/ja/web/api/node/nodetype/index.md delete mode 100644 files/ja/web/api/node/nodevalue/index.html create mode 100644 files/ja/web/api/node/nodevalue/index.md delete mode 100644 files/ja/web/api/node/ownerdocument/index.html create mode 100644 files/ja/web/api/node/ownerdocument/index.md delete mode 100644 files/ja/web/api/node/parentelement/index.html create mode 100644 files/ja/web/api/node/parentelement/index.md delete mode 100644 files/ja/web/api/node/parentnode/index.html create mode 100644 files/ja/web/api/node/parentnode/index.md delete mode 100644 files/ja/web/api/node/previoussibling/index.html create mode 100644 files/ja/web/api/node/previoussibling/index.md delete mode 100644 files/ja/web/api/node/textcontent/index.html create mode 100644 files/ja/web/api/node/textcontent/index.md (limited to 'files/ja') diff --git a/files/ja/web/api/node/childnodes/index.html b/files/ja/web/api/node/childnodes/index.html deleted file mode 100644 index 82a90460c6..0000000000 --- a/files/ja/web/api/node/childnodes/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Node.childNodes -slug: Web/API/Node/childNodes -tags: - - API - - DOM - - DOMリファレンス - - プロパティ - - リファレンス -translation_of: Web/API/Node/childNodes ---- -

    {{ ApiRef() }}

    - -

    Node.childNodes読み取り専用プロパティは、最初の子ノードにインデックス0が割り当てられている、指定された要素の子{{domxref("Node","nodes")}}の現在の{{domxref("NodeList")}}を返します。

    - -

    構文

    - -
    let nodeList = elementNodeReference.childNodes;
    -
    - -

    - -

    簡単な使用方法

    - -
    // 変数pargは<p>要素へのオブジェクト参照です
    -
    -// まず、pargが子ノードを持っているかをチェックします
    -if (parg.hasChildNodes()) {
    -  var children = parg.childNodes;
    -
    -  for (let i = 0; i < children.length; i++) {
    -    // for文を使って各ノードにchildren[i]としてアクセスします
    -    // 注意! NodeListは不変ではないので、ノードを追加したり削除したりするとchildren.lengthは変化します
    -  }
    -}
    - -

    ノードから全ての子を削除する

    - -
    // これは一例ですが、この方法でノードからすべての子ノードを削除することができます
    -// let box = document.getElementById(/**/);
    -
    -while (box.firstChild) {
    -    // NodeListは不変ではないので、毎処理ごとにbox.firstChildは変化します
    -    box.removeChild(box.firstChild);
    -}
    - -

    注記

    - -

    ノードのコレクション内の項目はオブジェクトであり、文字列ではありません。node オブジェクトからデータを取得するには、そのプロパティ (たとえばelementNodeReference.childNodes[1].nodeName で名前を取得) を使用します。
    -
    - documentオブジェクト自体には Doctype 宣言と root 要素 の2つの子があり、通常はdocumentElementと呼ばれます。 ((X)HTML文書ではこれがHTML要素です)
    -
    - childNodesにはテキストノードやコメントノードなどの非要素ノードを含むすべての子ノードが含まれます。要素のみのコレクションを取得するには、代わりに{{domxref("ParentNode.children")}} を使用してください。

    - -

    仕様

    - -
    前提条件:基本的なコンピューターの知識および利用能力、HTMLCSS の基本的な理解、JavaScript の基本 (第一歩構成要素, JavaScriptオブジェクト).基本的なコンピューターの知識および利用能力、HTMLCSS の基本的な理解、JavaScript の基本 (第一歩構成要素, JavaScript オブジェクト).
    目的:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    仕様ステータスコメント
    {{SpecName('DOM WHATWG', '#dom-node-childnodes', 'Node.childNodes')}}{{Spec2('DOM WHATWG')}}変更なし
    {{SpecName('DOM3 Core', 'core.html#ID-1451460987', 'Node.childNodes')}}{{Spec2('DOM3 Core')}}変更なし
    {{SpecName('DOM2 Core', 'core.html#ID-1451460987', 'Node.childNodes')}}{{Spec2('DOM2 Core')}}変更なし
    {{SpecName('DOM1', 'level-one-core.html#ID-1451460987', 'Node.childNodes')}}{{Spec2('DOM1')}}初回定義
    - -

    ブラウザの互換性

    - -

    {{Compat("api.Node.childNodes")}}

    - -

    関連情報

    - - diff --git a/files/ja/web/api/node/childnodes/index.md b/files/ja/web/api/node/childnodes/index.md new file mode 100644 index 0000000000..82a90460c6 --- /dev/null +++ b/files/ja/web/api/node/childnodes/index.md @@ -0,0 +1,101 @@ +--- +title: Node.childNodes +slug: Web/API/Node/childNodes +tags: + - API + - DOM + - DOMリファレンス + - プロパティ + - リファレンス +translation_of: Web/API/Node/childNodes +--- +

    {{ ApiRef() }}

    + +

    Node.childNodes読み取り専用プロパティは、最初の子ノードにインデックス0が割り当てられている、指定された要素の子{{domxref("Node","nodes")}}の現在の{{domxref("NodeList")}}を返します。

    + +

    構文

    + +
    let nodeList = elementNodeReference.childNodes;
    +
    + +

    + +

    簡単な使用方法

    + +
    // 変数pargは<p>要素へのオブジェクト参照です
    +
    +// まず、pargが子ノードを持っているかをチェックします
    +if (parg.hasChildNodes()) {
    +  var children = parg.childNodes;
    +
    +  for (let i = 0; i < children.length; i++) {
    +    // for文を使って各ノードにchildren[i]としてアクセスします
    +    // 注意! NodeListは不変ではないので、ノードを追加したり削除したりするとchildren.lengthは変化します
    +  }
    +}
    + +

    ノードから全ての子を削除する

    + +
    // これは一例ですが、この方法でノードからすべての子ノードを削除することができます
    +// let box = document.getElementById(/**/);
    +
    +while (box.firstChild) {
    +    // NodeListは不変ではないので、毎処理ごとにbox.firstChildは変化します
    +    box.removeChild(box.firstChild);
    +}
    + +

    注記

    + +

    ノードのコレクション内の項目はオブジェクトであり、文字列ではありません。node オブジェクトからデータを取得するには、そのプロパティ (たとえばelementNodeReference.childNodes[1].nodeName で名前を取得) を使用します。
    +
    + documentオブジェクト自体には Doctype 宣言と root 要素 の2つの子があり、通常はdocumentElementと呼ばれます。 ((X)HTML文書ではこれがHTML要素です)
    +
    + childNodesにはテキストノードやコメントノードなどの非要素ノードを含むすべての子ノードが含まれます。要素のみのコレクションを取得するには、代わりに{{domxref("ParentNode.children")}} を使用してください。

    + +

    仕様

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    仕様ステータスコメント
    {{SpecName('DOM WHATWG', '#dom-node-childnodes', 'Node.childNodes')}}{{Spec2('DOM WHATWG')}}変更なし
    {{SpecName('DOM3 Core', 'core.html#ID-1451460987', 'Node.childNodes')}}{{Spec2('DOM3 Core')}}変更なし
    {{SpecName('DOM2 Core', 'core.html#ID-1451460987', 'Node.childNodes')}}{{Spec2('DOM2 Core')}}変更なし
    {{SpecName('DOM1', 'level-one-core.html#ID-1451460987', 'Node.childNodes')}}{{Spec2('DOM1')}}初回定義
    + +

    ブラウザの互換性

    + +

    {{Compat("api.Node.childNodes")}}

    + +

    関連情報

    + + diff --git a/files/ja/web/api/node/firstchild/index.html b/files/ja/web/api/node/firstchild/index.html deleted file mode 100644 index 5a57be3ae9..0000000000 --- a/files/ja/web/api/node/firstchild/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Node.firstChild -slug: Web/API/Node/firstChild -tags: - - DOM - - Gecko - - Gecko DOM Reference - - Node -translation_of: Web/API/Node/firstChild ---- -
    - {{ApiRef}}
    -

    概要

    -

    ノードのツリーの中で最初の子ノード、もしくは子ノードがなければ null を返します。ノードが Document の場合は、その直接の子のリスト内の最初のノードを返します。

    -

    構文

    -
    var childNode = node.firstChild;
    -
    - -

    -

    次の例では firstChild の使用方法と、このプロパティを使用すると空白ノードがどのように影響するかをデモンストレーションしています。Gecko DOM に於ける空白の扱われ方についてより多くの情報を得るために、{{Anch("Notes")}} も参照してください。

    -
    <p id="para-01">
    -  <span>First span</span>
    -</p>
    -
    -<script type="text/javascript">
    -  var p01 = document.getElementById('para-01');
    -  alert(p01.firstChild.nodeName)
    -</script>
    -

    上記の例では alert は'#text'を表示します。なぜなら開始タグ <p> の末端と <span> の間にある空白を調整するためにテキストノードが挿入されているからです。どんな 空白、単一スペースから多数のスペース、改行、タブ等々、も #text ノードを挿入することになります。

    -

    その他の #text ノードは閉じタグ </span> と </p> の間に挿入されていみます。

    -

    もしこの空白がソースから取り除かれれば、#text ノードは挿入されず、span 要素は段落の最初の子ノードとなります。

    -
    <p id="para-01"><span>First span</span></p>
    -
    -<script type="text/javascript">
    -  var p01 = document.getElementById('para-01');
    -  alert(p01.firstChild.nodeName)
    -</script>
    -
    -

    今度は alert は 'SPAN' を表示するでしょう。

    -

    仕様書

    - diff --git a/files/ja/web/api/node/firstchild/index.md b/files/ja/web/api/node/firstchild/index.md new file mode 100644 index 0000000000..5a57be3ae9 --- /dev/null +++ b/files/ja/web/api/node/firstchild/index.md @@ -0,0 +1,46 @@ +--- +title: Node.firstChild +slug: Web/API/Node/firstChild +tags: + - DOM + - Gecko + - Gecko DOM Reference + - Node +translation_of: Web/API/Node/firstChild +--- +
    + {{ApiRef}}
    +

    概要

    +

    ノードのツリーの中で最初の子ノード、もしくは子ノードがなければ null を返します。ノードが Document の場合は、その直接の子のリスト内の最初のノードを返します。

    +

    構文

    +
    var childNode = node.firstChild;
    +
    + +

    +

    次の例では firstChild の使用方法と、このプロパティを使用すると空白ノードがどのように影響するかをデモンストレーションしています。Gecko DOM に於ける空白の扱われ方についてより多くの情報を得るために、{{Anch("Notes")}} も参照してください。

    +
    <p id="para-01">
    +  <span>First span</span>
    +</p>
    +
    +<script type="text/javascript">
    +  var p01 = document.getElementById('para-01');
    +  alert(p01.firstChild.nodeName)
    +</script>
    +

    上記の例では alert は'#text'を表示します。なぜなら開始タグ <p> の末端と <span> の間にある空白を調整するためにテキストノードが挿入されているからです。どんな 空白、単一スペースから多数のスペース、改行、タブ等々、も #text ノードを挿入することになります。

    +

    その他の #text ノードは閉じタグ </span> と </p> の間に挿入されていみます。

    +

    もしこの空白がソースから取り除かれれば、#text ノードは挿入されず、span 要素は段落の最初の子ノードとなります。

    +
    <p id="para-01"><span>First span</span></p>
    +
    +<script type="text/javascript">
    +  var p01 = document.getElementById('para-01');
    +  alert(p01.firstChild.nodeName)
    +</script>
    +
    +

    今度は alert は 'SPAN' を表示するでしょう。

    +

    仕様書

    + diff --git a/files/ja/web/api/node/lastchild/index.html b/files/ja/web/api/node/lastchild/index.html deleted file mode 100644 index e7f5626f3c..0000000000 --- a/files/ja/web/api/node/lastchild/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Node.lastChild -slug: Web/API/Node/lastChild -tags: - - DOM - - Gecko - - Gecko DOM Reference - - Node -translation_of: Web/API/Node/lastChild ---- -
    - {{ApiRef}}
    -

    概要

    -

    lastChild はノードの子要素の内、最後のものを返します。

    -

    構文

    -
    var last_child = element.lastChild
    -
    -

    説明

    -

    lastChild として返されるのはノードです。その親が要素であるならば、子ノードは一般的に Element ノード、Text ノード、Comment ノード となります。子要素を持たない場合は null が返されます。

    -

    -
    var tr = document.getElementById("row1");  // table 要素の特定の行を取得
    -var corner_td = tr.lastChild;  // 特定の行の内、最後のセルを取得
    -
    -

    仕様書

    - diff --git a/files/ja/web/api/node/lastchild/index.md b/files/ja/web/api/node/lastchild/index.md new file mode 100644 index 0000000000..e7f5626f3c --- /dev/null +++ b/files/ja/web/api/node/lastchild/index.md @@ -0,0 +1,28 @@ +--- +title: Node.lastChild +slug: Web/API/Node/lastChild +tags: + - DOM + - Gecko + - Gecko DOM Reference + - Node +translation_of: Web/API/Node/lastChild +--- +
    + {{ApiRef}}
    +

    概要

    +

    lastChild はノードの子要素の内、最後のものを返します。

    +

    構文

    +
    var last_child = element.lastChild
    +
    +

    説明

    +

    lastChild として返されるのはノードです。その親が要素であるならば、子ノードは一般的に Element ノード、Text ノード、Comment ノード となります。子要素を持たない場合は null が返されます。

    +

    +
    var tr = document.getElementById("row1");  // table 要素の特定の行を取得
    +var corner_td = tr.lastChild;  // 特定の行の内、最後のセルを取得
    +
    +

    仕様書

    + diff --git a/files/ja/web/api/node/nextsibling/index.html b/files/ja/web/api/node/nextsibling/index.html deleted file mode 100644 index 1ff4c13cef..0000000000 --- a/files/ja/web/api/node/nextsibling/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Node.nextSibling -slug: Web/API/Node/nextSibling -tags: - - DOM - - Gecko - - Node - - 要更新 -translation_of: Web/API/Node/nextSibling ---- -
    -
    -
    {{APIRef("DOM")}}
    -
    - -

    Node.nextSibling という読み取り専用プロパティは指定したノードの親の{{domxref("Node.childNodes","子ノード")}}リスト内ですぐ次にあるノードを返し、指定したノードがリストで最後の場合は null を返します。

    -
    - -

    構文

    - -
    nextNode = node.nextSibling
    -
    - -

    注記

    - -
    -

    Geckoベースのブラウザーはソースマークアップの中で空白を表現するためにテキストノードをドキュメントに挿入します。ですので、例えば Node.firstChildNode.previousSibling で得られるノードが、作者が取得しようとした実際の要素ではなく、空白のテキストノードを参照していることがあります。

    -

    より多くの情報を得るには『DOM 中の空白文字』と『W3C DOM 3 FAQ: Why are some Text nodes empty?』を参照してください。

    - -
     
    - -
    {{domxref("Element.nextElementSibling")}} は空白ノードを飛ばして次の要素を得るのに使われます。
    -
    - -

    - -
    <div id="div-01">Here is div-01</div>
    -<div id="div-02">Here is div-02</div>
    -
    -<script type="text/javascript">
    -var el = document.getElementById('div-01').nextSibling,
    -    i = 1;
    -
    -console.log('Siblings of div-01:');
    -
    -while (el) {
    -  console.log(i + '. ' + el.nodeName);
    -  el = el.nextSibling;
    -  i++;
    -}
    -
    -</script>
    -
    -/**************************************************
    -  The following is written to the console as it loads:
    -
    -     Siblings of div-01
    -
    -      1. #text
    -      2. DIV
    -      3. #text
    -      4. SCRIPT
    -
    -**************************************************/
    - -

    上の例で、#text ノードがタグ間のマークアップ内に (つまり、 要素の閉じタグと次の開始タグの間) 空白がある DOM に挿入されているのが見られます。 document.write 文で挿入された要素の間には空白が作成されません。

    - -

    DOM にテキストノードが入りうるのは DOM が nextSibling を使って横断される時に許可されます。注記のセクションのリソースを見てください。

    - -

    仕様

    - - - -

    ブラウザ実装状況

    - - - -

    {{Compat("api.Node.nextSibling")}}

    - -

    関連情報

    - - diff --git a/files/ja/web/api/node/nextsibling/index.md b/files/ja/web/api/node/nextsibling/index.md new file mode 100644 index 0000000000..1ff4c13cef --- /dev/null +++ b/files/ja/web/api/node/nextsibling/index.md @@ -0,0 +1,87 @@ +--- +title: Node.nextSibling +slug: Web/API/Node/nextSibling +tags: + - DOM + - Gecko + - Node + - 要更新 +translation_of: Web/API/Node/nextSibling +--- +
    +
    +
    {{APIRef("DOM")}}
    +
    + +

    Node.nextSibling という読み取り専用プロパティは指定したノードの親の{{domxref("Node.childNodes","子ノード")}}リスト内ですぐ次にあるノードを返し、指定したノードがリストで最後の場合は null を返します。

    +
    + +

    構文

    + +
    nextNode = node.nextSibling
    +
    + +

    注記

    + +
    +

    Geckoベースのブラウザーはソースマークアップの中で空白を表現するためにテキストノードをドキュメントに挿入します。ですので、例えば Node.firstChildNode.previousSibling で得られるノードが、作者が取得しようとした実際の要素ではなく、空白のテキストノードを参照していることがあります。

    +

    より多くの情報を得るには『DOM 中の空白文字』と『W3C DOM 3 FAQ: Why are some Text nodes empty?』を参照してください。

    + +
     
    + +
    {{domxref("Element.nextElementSibling")}} は空白ノードを飛ばして次の要素を得るのに使われます。
    +
    + +

    + +
    <div id="div-01">Here is div-01</div>
    +<div id="div-02">Here is div-02</div>
    +
    +<script type="text/javascript">
    +var el = document.getElementById('div-01').nextSibling,
    +    i = 1;
    +
    +console.log('Siblings of div-01:');
    +
    +while (el) {
    +  console.log(i + '. ' + el.nodeName);
    +  el = el.nextSibling;
    +  i++;
    +}
    +
    +</script>
    +
    +/**************************************************
    +  The following is written to the console as it loads:
    +
    +     Siblings of div-01
    +
    +      1. #text
    +      2. DIV
    +      3. #text
    +      4. SCRIPT
    +
    +**************************************************/
    + +

    上の例で、#text ノードがタグ間のマークアップ内に (つまり、 要素の閉じタグと次の開始タグの間) 空白がある DOM に挿入されているのが見られます。 document.write 文で挿入された要素の間には空白が作成されません。

    + +

    DOM にテキストノードが入りうるのは DOM が nextSibling を使って横断される時に許可されます。注記のセクションのリソースを見てください。

    + +

    仕様

    + + + +

    ブラウザ実装状況

    + + + +

    {{Compat("api.Node.nextSibling")}}

    + +

    関連情報

    + + diff --git a/files/ja/web/api/node/nodename/index.html b/files/ja/web/api/node/nodename/index.html deleted file mode 100644 index 65daeb1074..0000000000 --- a/files/ja/web/api/node/nodename/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Node.nodeName -slug: Web/API/Node/nodeName -tags: - - DOM - - Gecko - - Gecko DOM Reference -translation_of: Web/API/Node/nodeName ---- -
    - {{APIRef}}
    -
    -  
    -
    - 概要
    -

    ノードの名前を文字列で返します。

    -

    構文

    -
    str = node.nodeName;
    -
    - -

    注記

    -

    以下の異なる種類のノードの戻り値があります。

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    InterfacenodeName
    AttrAttr.name と同じ
    CDATASection"#cdata-section"
    Comment"#comment"
    Document"#document"
    DocumentFragment"#document-fragment"
    DocumentTypeDocumentType.name と同じ
    ElementElement.tagName と同じ
    Entity実体名
    EntityReference実体参照名
    Notation記法名
    ProcessingInstructionProcessingInstruction.target と同じ
    Text"#text"
    -

    -

    次のマークアップ文書が与えられているとします。

    -
    <div id="d1">hello world</div>
    -<input type="text" id="t"/>
    -
    -

    そして、以下のスクリプトがあると考えてください。

    -
    var div1 = document.getElementById("d1");
    -var text_field = document.getElementById("t");
    -
    -text_field.value = div1.nodeName;
    -
    -

    XHTML (あるいは、他の XML 形式) の場合 text_field の値には "div" が入ります。しかし、HTML の場合 text_field の値には "DIV" が入ります。

    -

    注意: tagName プロパティが使用された場合、nodeNametagName と同じ値になります。tagName が未定義 (undefined) の時 nodeName はテキストノードである #text を返します。

    -

    仕様

    - diff --git a/files/ja/web/api/node/nodename/index.md b/files/ja/web/api/node/nodename/index.md new file mode 100644 index 0000000000..65daeb1074 --- /dev/null +++ b/files/ja/web/api/node/nodename/index.md @@ -0,0 +1,102 @@ +--- +title: Node.nodeName +slug: Web/API/Node/nodeName +tags: + - DOM + - Gecko + - Gecko DOM Reference +translation_of: Web/API/Node/nodeName +--- +
    + {{APIRef}}
    +
    +  
    +
    + 概要
    +

    ノードの名前を文字列で返します。

    +

    構文

    +
    str = node.nodeName;
    +
    + +

    注記

    +

    以下の異なる種類のノードの戻り値があります。

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    InterfacenodeName
    AttrAttr.name と同じ
    CDATASection"#cdata-section"
    Comment"#comment"
    Document"#document"
    DocumentFragment"#document-fragment"
    DocumentTypeDocumentType.name と同じ
    ElementElement.tagName と同じ
    Entity実体名
    EntityReference実体参照名
    Notation記法名
    ProcessingInstructionProcessingInstruction.target と同じ
    Text"#text"
    +

    +

    次のマークアップ文書が与えられているとします。

    +
    <div id="d1">hello world</div>
    +<input type="text" id="t"/>
    +
    +

    そして、以下のスクリプトがあると考えてください。

    +
    var div1 = document.getElementById("d1");
    +var text_field = document.getElementById("t");
    +
    +text_field.value = div1.nodeName;
    +
    +

    XHTML (あるいは、他の XML 形式) の場合 text_field の値には "div" が入ります。しかし、HTML の場合 text_field の値には "DIV" が入ります。

    +

    注意: tagName プロパティが使用された場合、nodeNametagName と同じ値になります。tagName が未定義 (undefined) の時 nodeName はテキストノードである #text を返します。

    +

    仕様

    + diff --git a/files/ja/web/api/node/nodetype/index.html b/files/ja/web/api/node/nodetype/index.html deleted file mode 100644 index 135f0f95c7..0000000000 --- a/files/ja/web/api/node/nodetype/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Node.nodeType -slug: Web/API/Node/nodeType -tags: - - DOM - - Gecko - - Gecko DOM Reference -translation_of: Web/API/Node/nodeType ---- -
    - {{ApiRef}}
    -

    概要

    -

    ノードの種類を表す整数のコードを返します。

    -

    構文

    -
    var type = node.nodeType;
    -
    -

    type は以下の内の何れかの unsigned short 型の値となります。

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    名称
    ELEMENT_NODE1
    ATTRIBUTE_NODE {{deprecated_inline}}2
    TEXT_NODE3
    CDATA_SECTION_NODE {{deprecated_inline}}4
    ENTITY_REFERENCE_NODE {{deprecated_inline}}5
    ENTITY_NODE {{deprecated_inline}}6
    PROCESSING_INSTRUCTION_NODE7
    COMMENT_NODE8
    DOCUMENT_NODE9
    DOCUMENT_TYPE_NODE10
    DOCUMENT_FRAGMENT_NODE11
    NOTATION_NODE {{deprecated_inline}}12
    -

    -

    次の例は、ノードの最初の要素がコメントノードであるかをチェックし、そうでない場合にメッセージを表示するものです。

    -
    var node = document.documentElement.firstChild;
    -
    -if (node.nodeType != Node.COMMENT_NODE)
    -  console.log("※社内コーディングルールに沿ったコメントを記述して下さい。");
    -
    -

    仕様書

    - diff --git a/files/ja/web/api/node/nodetype/index.md b/files/ja/web/api/node/nodetype/index.md new file mode 100644 index 0000000000..135f0f95c7 --- /dev/null +++ b/files/ja/web/api/node/nodetype/index.md @@ -0,0 +1,88 @@ +--- +title: Node.nodeType +slug: Web/API/Node/nodeType +tags: + - DOM + - Gecko + - Gecko DOM Reference +translation_of: Web/API/Node/nodeType +--- +
    + {{ApiRef}}
    +

    概要

    +

    ノードの種類を表す整数のコードを返します。

    +

    構文

    +
    var type = node.nodeType;
    +
    +

    type は以下の内の何れかの unsigned short 型の値となります。

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称
    ELEMENT_NODE1
    ATTRIBUTE_NODE {{deprecated_inline}}2
    TEXT_NODE3
    CDATA_SECTION_NODE {{deprecated_inline}}4
    ENTITY_REFERENCE_NODE {{deprecated_inline}}5
    ENTITY_NODE {{deprecated_inline}}6
    PROCESSING_INSTRUCTION_NODE7
    COMMENT_NODE8
    DOCUMENT_NODE9
    DOCUMENT_TYPE_NODE10
    DOCUMENT_FRAGMENT_NODE11
    NOTATION_NODE {{deprecated_inline}}12
    +

    +

    次の例は、ノードの最初の要素がコメントノードであるかをチェックし、そうでない場合にメッセージを表示するものです。

    +
    var node = document.documentElement.firstChild;
    +
    +if (node.nodeType != Node.COMMENT_NODE)
    +  console.log("※社内コーディングルールに沿ったコメントを記述して下さい。");
    +
    +

    仕様書

    + diff --git a/files/ja/web/api/node/nodevalue/index.html b/files/ja/web/api/node/nodevalue/index.html deleted file mode 100644 index 2cfbbf795f..0000000000 --- a/files/ja/web/api/node/nodevalue/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Node.nodeValue -slug: Web/API/Node/nodeValue -tags: - - DOM - - Gecko - - Gecko DOM Reference - - Node -translation_of: Web/API/Node/nodeValue ---- -
    - {{ApiRef}}
    -

    概要

    -

    ノードの値を取得または設定します。

    -

    構文

    -
    value = node.nodeValue
    -

    node.nodeValue が存在する場合、 value はノードの値を含む文字列です。

    -

    注記

    -

    document 自身は、 nodeValuenullを返します。text

    -

    ノード、 comment ノード、CDATA ノードでは、 nodeValue はノードの中身を返します。 attribute ノードは属性値を返します。

    -

     

    -

    以下の表は、 様々なノードの戻り値を表しています。

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Attrattribute の値
    CDATASectionCDATA Sectionの中身
    コメントcommentの中身
    Documentnull
    DocumentFragmentnull
    DocumentTypenull
    Elementnull
    NamedNodeMapnull
    EntityReferencenull
    Notationnull
    ProcessingInstructionターゲットを除く全体の内容
    Textthe text nodeの中身
    -

    nodeValuenull と定義されている場合、値を設定しても効果はありません。

    -

    仕様書

    - diff --git a/files/ja/web/api/node/nodevalue/index.md b/files/ja/web/api/node/nodevalue/index.md new file mode 100644 index 0000000000..2cfbbf795f --- /dev/null +++ b/files/ja/web/api/node/nodevalue/index.md @@ -0,0 +1,81 @@ +--- +title: Node.nodeValue +slug: Web/API/Node/nodeValue +tags: + - DOM + - Gecko + - Gecko DOM Reference + - Node +translation_of: Web/API/Node/nodeValue +--- +
    + {{ApiRef}}
    +

    概要

    +

    ノードの値を取得または設定します。

    +

    構文

    +
    value = node.nodeValue
    +

    node.nodeValue が存在する場合、 value はノードの値を含む文字列です。

    +

    注記

    +

    document 自身は、 nodeValuenullを返します。text

    +

    ノード、 comment ノード、CDATA ノードでは、 nodeValue はノードの中身を返します。 attribute ノードは属性値を返します。

    +

     

    +

    以下の表は、 様々なノードの戻り値を表しています。

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Attrattribute の値
    CDATASectionCDATA Sectionの中身
    コメントcommentの中身
    Documentnull
    DocumentFragmentnull
    DocumentTypenull
    Elementnull
    NamedNodeMapnull
    EntityReferencenull
    Notationnull
    ProcessingInstructionターゲットを除く全体の内容
    Textthe text nodeの中身
    +

    nodeValuenull と定義されている場合、値を設定しても効果はありません。

    +

    仕様書

    + diff --git a/files/ja/web/api/node/ownerdocument/index.html b/files/ja/web/api/node/ownerdocument/index.html deleted file mode 100644 index f6eef4f570..0000000000 --- a/files/ja/web/api/node/ownerdocument/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Node.ownerDocument -slug: Web/API/Node/ownerDocument -tags: - - DOM - - Gecko - - Node -translation_of: Web/API/Node/ownerDocument ---- -
    {{ApiRef}}
    - -

    概要

    - -

    ownerDocument プロパティは、指定ノードを内包するノードツリーのトップレベルのドキュメントオブジェクトを返します。

    - -

    構文

    - -
    document = element.ownerDocument
    -
    - - - -

    - -
    var doc = p.ownerDocument; // ノード p のノードツリー上のトップレベル document オブジェクトを取得
    -var html = doc.documentElement; // owner のドキュメント要素を取得
    -
    -alert(html); // [object HTMLHtmlElement]
    -
    - -

    注記

    - -

    このプロパティによって返される document オブジェクトは、実際の HTML 文書中ですべての子ノードの属するメインオブジェクトです。document ノード自身に対しこのプロパティを用いた場合、戻り値は null となります。

    - -

    仕様

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpecificationStatusComment
    {{SpecName("DOM4", "#dom-node-ownerdocument", "Node.ownerDocument")}}{{Spec2("DOM4")}} 
    {{SpecName("DOM3 Core", "core.html#node-ownerDoc", "Node.ownerDocument")}}{{Spec2("DOM3 Core")}}No change
    {{SpecName("DOM2 Core", "core.html#node-ownerDoc", "Node.ownerDocument")}}{{Spec2("DOM2 Core")}}Initial definition
    - -

    ブラウザ実装状況

    - -

    {{Compat("api.Node.ownerDocument")}}

    diff --git a/files/ja/web/api/node/ownerdocument/index.md b/files/ja/web/api/node/ownerdocument/index.md new file mode 100644 index 0000000000..f6eef4f570 --- /dev/null +++ b/files/ja/web/api/node/ownerdocument/index.md @@ -0,0 +1,66 @@ +--- +title: Node.ownerDocument +slug: Web/API/Node/ownerDocument +tags: + - DOM + - Gecko + - Node +translation_of: Web/API/Node/ownerDocument +--- +
    {{ApiRef}}
    + +

    概要

    + +

    ownerDocument プロパティは、指定ノードを内包するノードツリーのトップレベルのドキュメントオブジェクトを返します。

    + +

    構文

    + +
    document = element.ownerDocument
    +
    + + + +

    + +
    var doc = p.ownerDocument; // ノード p のノードツリー上のトップレベル document オブジェクトを取得
    +var html = doc.documentElement; // owner のドキュメント要素を取得
    +
    +alert(html); // [object HTMLHtmlElement]
    +
    + +

    注記

    + +

    このプロパティによって返される document オブジェクトは、実際の HTML 文書中ですべての子ノードの属するメインオブジェクトです。document ノード自身に対しこのプロパティを用いた場合、戻り値は null となります。

    + +

    仕様

    + + + + + + + + + + + + + + + + + + + + + + + + +
    SpecificationStatusComment
    {{SpecName("DOM4", "#dom-node-ownerdocument", "Node.ownerDocument")}}{{Spec2("DOM4")}} 
    {{SpecName("DOM3 Core", "core.html#node-ownerDoc", "Node.ownerDocument")}}{{Spec2("DOM3 Core")}}No change
    {{SpecName("DOM2 Core", "core.html#node-ownerDoc", "Node.ownerDocument")}}{{Spec2("DOM2 Core")}}Initial definition
    + +

    ブラウザ実装状況

    + +

    {{Compat("api.Node.ownerDocument")}}

    diff --git a/files/ja/web/api/node/parentelement/index.html b/files/ja/web/api/node/parentelement/index.html deleted file mode 100644 index e121601c07..0000000000 --- a/files/ja/web/api/node/parentelement/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Node.parentElement -slug: Web/API/Node/parentElement -tags: - - DOM - - Element - - Node - - Property - - parent -translation_of: Web/API/Node/parentElement ---- -
    -
    {{APIRef("DOM")}}
    -
    - -

    Node.parentElementのread-only プロパティはDOM ノード上の親の {{domxref("Element")}} を返します。親ノードが存在しない場合や親ノードが DOM {{domxref("Element")}} で無い場合、null が返ります。

    - -

    構文

    - -
    parentElement = node.parentElement
    - -

    parentElementは現nodeの親elementです。型は必ずDOM {{domxref("Element")}} オブジェクトかnullです

    - -

    - -
    if (node.parentElement) {
    -  node.parentElement.style.color = "red";
    -}
    - -

    仕様

    - - - -

    ブラウザ実装状況

    - -

    {{Compat("api.Node.parentElement")}}

    - -

    一部のブラウザーでは、parentElementプロパティは {{domxref("Element")}} ノードでのみ定義されており、特にテキストノードに対して定義されていない場合がある点に注意して下さい。

    - -

    関連情報

    - - diff --git a/files/ja/web/api/node/parentelement/index.md b/files/ja/web/api/node/parentelement/index.md new file mode 100644 index 0000000000..e121601c07 --- /dev/null +++ b/files/ja/web/api/node/parentelement/index.md @@ -0,0 +1,46 @@ +--- +title: Node.parentElement +slug: Web/API/Node/parentElement +tags: + - DOM + - Element + - Node + - Property + - parent +translation_of: Web/API/Node/parentElement +--- +
    +
    {{APIRef("DOM")}}
    +
    + +

    Node.parentElementのread-only プロパティはDOM ノード上の親の {{domxref("Element")}} を返します。親ノードが存在しない場合や親ノードが DOM {{domxref("Element")}} で無い場合、null が返ります。

    + +

    構文

    + +
    parentElement = node.parentElement
    + +

    parentElementは現nodeの親elementです。型は必ずDOM {{domxref("Element")}} オブジェクトかnullです

    + +

    + +
    if (node.parentElement) {
    +  node.parentElement.style.color = "red";
    +}
    + +

    仕様

    + + + +

    ブラウザ実装状況

    + +

    {{Compat("api.Node.parentElement")}}

    + +

    一部のブラウザーでは、parentElementプロパティは {{domxref("Element")}} ノードでのみ定義されており、特にテキストノードに対して定義されていない場合がある点に注意して下さい。

    + +

    関連情報

    + + diff --git a/files/ja/web/api/node/parentnode/index.html b/files/ja/web/api/node/parentnode/index.html deleted file mode 100644 index 33ea858b0c..0000000000 --- a/files/ja/web/api/node/parentnode/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Node.parentNode -slug: Web/API/Node/parentNode -tags: - - DOM - - Gecko - - Gecko DOM Reference - - Node -translation_of: Web/API/Node/parentNode ---- -
    - {{ApiRef}}
    -

    概要

    -

    指定されたノードの DOM ツリー内の親ノードを返します。

    -

    構文

    -
    parentNode = node.parentNode
    -
    - -

    -
    if (node.parentNode) {
    -  // ツリー上に既に存在しない場合を除き、
    -  // ツリーからノードを削除します。
    -  node.parentNode.removeChild(node);
    -}
    -

    注記

    -

    parentNode は、以下のノードタイプについては null を返します : AttrDocumentDocumentFragmentEntityNotation

    -

    また、ノードが作成された直後でまだツリーに加えられていない場合も null を返します。

    -

    ブラウザ実装状況

    - -

    {{Compat("api.Node.parentNode")}}

    - -

    仕様書

    - -

    関連情報

    - diff --git a/files/ja/web/api/node/parentnode/index.md b/files/ja/web/api/node/parentnode/index.md new file mode 100644 index 0000000000..33ea858b0c --- /dev/null +++ b/files/ja/web/api/node/parentnode/index.md @@ -0,0 +1,47 @@ +--- +title: Node.parentNode +slug: Web/API/Node/parentNode +tags: + - DOM + - Gecko + - Gecko DOM Reference + - Node +translation_of: Web/API/Node/parentNode +--- +
    + {{ApiRef}}
    +

    概要

    +

    指定されたノードの DOM ツリー内の親ノードを返します。

    +

    構文

    +
    parentNode = node.parentNode
    +
    + +

    +
    if (node.parentNode) {
    +  // ツリー上に既に存在しない場合を除き、
    +  // ツリーからノードを削除します。
    +  node.parentNode.removeChild(node);
    +}
    +

    注記

    +

    parentNode は、以下のノードタイプについては null を返します : AttrDocumentDocumentFragmentEntityNotation

    +

    また、ノードが作成された直後でまだツリーに加えられていない場合も null を返します。

    +

    ブラウザ実装状況

    + +

    {{Compat("api.Node.parentNode")}}

    + +

    仕様書

    + +

    関連情報

    + diff --git a/files/ja/web/api/node/previoussibling/index.html b/files/ja/web/api/node/previoussibling/index.html deleted file mode 100644 index 5506f5fd86..0000000000 --- a/files/ja/web/api/node/previoussibling/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Node.previousSibling -slug: Web/API/Node/previousSibling -tags: - - DOM - - Gecko - - Node -translation_of: Web/API/Node/previousSibling ---- -
    {{ApiRef}}
    - -

    概要

    - -

    指定のノードの親ノードの childNodes リストの中で直前のノードを返します。また、指定のノードがそのリストの中で先頭の場合は null を返します。

    - -

    構文

    - -
    previousNode = node.previousSibling;
    -
    - -

    - -
    // <a><b1 id="b1"/><b2 id="b2"/></a>
    -
    -alert( document.getElementById("b1").previousSibling ); // null
    -alert( document.getElementById("b2").previousSibling.id ); // "b1"
    -
    - -

    注記

    - -

    Geckoベースのブラウザーはソースマークアップの中で空白を表現するためにテキストノードをドキュメントに挿入します。ですので、例えば Node.firstChildNode.previousSibling で得られるノードが、作者が取得しようとした実際の要素ではなく、空白のテキストノードを参照していることがあります。

    -

    より多くの情報を得るには『DOM 中の空白文字』と『W3C DOM 3 FAQ: Why are some Text nodes empty?』を参照してください。

    - -

    childNode リスト内の、指定ノードの次のノードの取得には {{domxref("Node.nextSibling")}} を用います。

    - -

    仕様書

    - - diff --git a/files/ja/web/api/node/previoussibling/index.md b/files/ja/web/api/node/previoussibling/index.md new file mode 100644 index 0000000000..5506f5fd86 --- /dev/null +++ b/files/ja/web/api/node/previoussibling/index.md @@ -0,0 +1,42 @@ +--- +title: Node.previousSibling +slug: Web/API/Node/previousSibling +tags: + - DOM + - Gecko + - Node +translation_of: Web/API/Node/previousSibling +--- +
    {{ApiRef}}
    + +

    概要

    + +

    指定のノードの親ノードの childNodes リストの中で直前のノードを返します。また、指定のノードがそのリストの中で先頭の場合は null を返します。

    + +

    構文

    + +
    previousNode = node.previousSibling;
    +
    + +

    + +
    // <a><b1 id="b1"/><b2 id="b2"/></a>
    +
    +alert( document.getElementById("b1").previousSibling ); // null
    +alert( document.getElementById("b2").previousSibling.id ); // "b1"
    +
    + +

    注記

    + +

    Geckoベースのブラウザーはソースマークアップの中で空白を表現するためにテキストノードをドキュメントに挿入します。ですので、例えば Node.firstChildNode.previousSibling で得られるノードが、作者が取得しようとした実際の要素ではなく、空白のテキストノードを参照していることがあります。

    +

    より多くの情報を得るには『DOM 中の空白文字』と『W3C DOM 3 FAQ: Why are some Text nodes empty?』を参照してください。

    + +

    childNode リスト内の、指定ノードの次のノードの取得には {{domxref("Node.nextSibling")}} を用います。

    + +

    仕様書

    + + diff --git a/files/ja/web/api/node/textcontent/index.html b/files/ja/web/api/node/textcontent/index.html deleted file mode 100644 index 3f90221d9f..0000000000 --- a/files/ja/web/api/node/textcontent/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Node.textContent -slug: Web/API/Node/textContent -tags: - - API - - DOM - - Node - - Property - - Reference - - プロパティ -translation_of: Web/API/Node/textContent ---- -
    {{APIRef("DOM")}}
    - -

    textContent は {{domxref ("Node")}} のプロパティで、ノードおよびその子孫のテキストの内容を表します。

    - -
    -

    メモ: textContent と {{domxref("HTMLElement.innerText")}} は混同しやすいものですが、2つのプロパティは重要な点が異なります

    -
    - -

    構文

    - -
    let text = someNode.textContent
    -someOtherNode.textContent = string
    -
    - -

    - -

    文字列または {{jsxref("null")}}

    - -

    説明

    - -

    textContent の値は状況によります。

    - - - -

    ノードの textContent を設定すると、そのノードのすべての子が取り除かれて、指定された値をもつ単一のテキストノードに置き換わります。

    - -

    innerText との違い

    - -

    Node.textContent と {{domxref("HTMLElement.innerText")}} の間の違いに混乱しないでください。名前は似ているようですが、重要な違いがあります。

    - - - -

    innerHTML との違い

    - -

    {{domxref("Element.innerHTML")}} は、その名が示すとおり HTML を返します。時に、 innerHTML を使用して要素内のテキストを受け取ったり書き込んだりすることがありますが、 textContent は値が HTML として解析されないので性能が良くなります。

    - -

    さらに、textContent を使用することで {{glossary("Cross-site_scripting", "XSS 攻撃")}}を防ぐことができます。

    - -

    - -

    以下のような HTML の断片があります。

    - -
    <div id="divA">This is <span>some</span> text!</div>
    - -

    ... textContent を使用して、要素のテキストの内容を取得することができます。

    - -
    let text = document.getElementById('divA').textContent;
    -// 変数 text の値は 'This is some text!' となります。
    - -

    ... また、要素のテキストを設定します。

    - -
    document.getElementById('divA').textContent = 'This text is different!';
    -// divA の HTML は次のようになります。
    -// <div id="divA">This text is different!</div>
    -
    - -

    仕様書

    - - - - - - - - - - - - - - - - -
    仕様書状態備考
    {{SpecName('DOM WHATWG','#dom-node-textcontent','Node.textContent')}}{{Spec2('DOM WHATWG')}}
    - -

    ブラウザーの互換性

    - -

    {{Compat("api.Node.textContent")}}

    - -

    関連情報

    - - diff --git a/files/ja/web/api/node/textcontent/index.md b/files/ja/web/api/node/textcontent/index.md new file mode 100644 index 0000000000..3f90221d9f --- /dev/null +++ b/files/ja/web/api/node/textcontent/index.md @@ -0,0 +1,113 @@ +--- +title: Node.textContent +slug: Web/API/Node/textContent +tags: + - API + - DOM + - Node + - Property + - Reference + - プロパティ +translation_of: Web/API/Node/textContent +--- +
    {{APIRef("DOM")}}
    + +

    textContent は {{domxref ("Node")}} のプロパティで、ノードおよびその子孫のテキストの内容を表します。

    + +
    +

    メモ: textContent と {{domxref("HTMLElement.innerText")}} は混同しやすいものですが、2つのプロパティは重要な点が異なります

    +
    + +

    構文

    + +
    let text = someNode.textContent
    +someOtherNode.textContent = string
    +
    + +

    + +

    文字列または {{jsxref("null")}}

    + +

    説明

    + +

    textContent の値は状況によります。

    + + + +

    ノードの textContent を設定すると、そのノードのすべての子が取り除かれて、指定された値をもつ単一のテキストノードに置き換わります。

    + +

    innerText との違い

    + +

    Node.textContent と {{domxref("HTMLElement.innerText")}} の間の違いに混乱しないでください。名前は似ているようですが、重要な違いがあります。

    + + + +

    innerHTML との違い

    + +

    {{domxref("Element.innerHTML")}} は、その名が示すとおり HTML を返します。時に、 innerHTML を使用して要素内のテキストを受け取ったり書き込んだりすることがありますが、 textContent は値が HTML として解析されないので性能が良くなります。

    + +

    さらに、textContent を使用することで {{glossary("Cross-site_scripting", "XSS 攻撃")}}を防ぐことができます。

    + +

    + +

    以下のような HTML の断片があります。

    + +
    <div id="divA">This is <span>some</span> text!</div>
    + +

    ... textContent を使用して、要素のテキストの内容を取得することができます。

    + +
    let text = document.getElementById('divA').textContent;
    +// 変数 text の値は 'This is some text!' となります。
    + +

    ... また、要素のテキストを設定します。

    + +
    document.getElementById('divA').textContent = 'This text is different!';
    +// divA の HTML は次のようになります。
    +// <div id="divA">This text is different!</div>
    +
    + +

    仕様書

    + + + + + + + + + + + + + + + + +
    仕様書状態備考
    {{SpecName('DOM WHATWG','#dom-node-textcontent','Node.textContent')}}{{Spec2('DOM WHATWG')}}
    + +

    ブラウザーの互換性

    + +

    {{Compat("api.Node.textContent")}}

    + +

    関連情報

    + + -- cgit v1.2.3-54-g00ecf From 0e7fc92daa74711762322b806e2371ff19d2fed3 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sat, 26 Feb 2022 02:27:38 +0900 Subject: 2021/12/20 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/nodename/index.md | 174 ++++++++++++++------------------ 1 file changed, 78 insertions(+), 96 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/node/nodename/index.md b/files/ja/web/api/node/nodename/index.md index 65daeb1074..ea9679714d 100644 --- a/files/ja/web/api/node/nodename/index.md +++ b/files/ja/web/api/node/nodename/index.md @@ -2,101 +2,83 @@ title: Node.nodeName slug: Web/API/Node/nodeName tags: - - DOM - - Gecko - - Gecko DOM Reference + - プロパティ + - リファレンス + - 読み取り専用 +browser-compat: api.Node.nodeName translation_of: Web/API/Node/nodeName --- -
    - {{APIRef}}
    -
    -  
    -
    - 概要
    -

    ノードの名前を文字列で返します。

    -

    構文

    -
    str = node.nodeName;
    -
    -
      -
    • str には指定した要素の名前が文字列の形式で入ります。
    • -
    • nodeName は読み取り専用の属性です。
    • -
    -

    注記

    -

    以下の異なる種類のノードの戻り値があります。

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    InterfacenodeName
    AttrAttr.name と同じ
    CDATASection"#cdata-section"
    Comment"#comment"
    Document"#document"
    DocumentFragment"#document-fragment"
    DocumentTypeDocumentType.name と同じ
    ElementElement.tagName と同じ
    Entity実体名
    EntityReference実体参照名
    Notation記法名
    ProcessingInstructionProcessingInstruction.target と同じ
    Text"#text"
    -

    -

    次のマークアップ文書が与えられているとします。

    -
    <div id="d1">hello world</div>
    -<input type="text" id="t"/>
    -
    -

    そして、以下のスクリプトがあると考えてください。

    -
    var div1 = document.getElementById("d1");
    -var text_field = document.getElementById("t");
    -
    -text_field.value = div1.nodeName;
    -
    -

    XHTML (あるいは、他の XML 形式) の場合 text_field の値には "div" が入ります。しかし、HTML の場合 text_field の値には "DIV" が入ります。

    -

    注意: tagName プロパティが使用された場合、nodeNametagName と同じ値になります。tagName が未定義 (undefined) の時 nodeName はテキストノードである #text を返します。

    -

    仕様

    - +{{APIRef("DOM")}} + +**`nodeName`** は {{domxref("Node")}} の読み取り専用プロパティで、現在のノードの名前を文字列で返します。 + +## 値 + +文字列です。ノードの種類によって、次のような値になります。 + +- {{domxref("Attr")}} + - : {{domxref("Attr.name")}} の値で、この属性の*修飾名*です。 +- {{domxref("CDATASection")}} + - : `"#cdata-section"` という文字列です。 +- {{domxref("Comment")}} + - : `"#comment"` という文字列です。 +- {{domxref("Document")}} + - : `"#document"` という文字列です。 +- {{domxref("DocumentFragment")}} + - : `"#document-fragment"` という文字列です。 +- {{domxref("DocumentType")}} + - : {{domxref("DocumentType.name")}} の値です。 +- {{domxref("Element")}} + - : {{domxref("Element.tagName")}} の値です。これは HTML 要素であればその要素のタグの*大文字の*名前であり、 XML 要素(SVG や MathML の要素)であればその要素のタグの*小文字の*名前です。 +- {{domxref("ProcessingInstruction")}} + - : {{domxref("ProcessingInstruction.target")}} の値です。 +- {{domxref("Text")}} + - : `"#text"` という文字列です。 + +## 例 + +この例では、様々なノードのノード名を表示します。 + +```html +こちらは HTML です。 +
    Hello world
    + +テキストテキスト +テキスト
    + + + +
    +まだ出力されていません。 +``` + +また、スクリプトは以下の通りです。 + +```js +let node = document.getElementsByTagName("body")[0].firstChild; +let result = "ノード名:
    "; +while (node) { + result += node.nodeName + "
    "; + node = node.nextSibling +} + +const output = document.getElementById("result"); +output.innerHTML = result; +``` + +{{ EmbedLiveSample("Example", "100%", "450")}} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Element.tagName")}} +- {{domxref("Attr.name")}} +- {{domxref("DocumentType.name")}} +- {{domxref("ProcessingInstruction.target")}} -- cgit v1.2.3-54-g00ecf From ed6203f957a5616efa135b87368715645b251444 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sat, 26 Feb 2022 00:16:32 +0900 Subject: 2021/11/08 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/childnodes/index.md | 159 +++++++++++---------------- files/ja/web/api/node/firstchild/index.md | 103 ++++++++++------- files/ja/web/api/node/lastchild/index.md | 55 +++++---- files/ja/web/api/node/nextsibling/index.md | 107 ++++++++---------- files/ja/web/api/node/nodetype/index.md | 150 ++++++++++++------------- files/ja/web/api/node/nodevalue/index.md | 136 ++++++++++------------- files/ja/web/api/node/ownerdocument/index.md | 68 ++++-------- 7 files changed, 353 insertions(+), 425 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/node/childnodes/index.md b/files/ja/web/api/node/childnodes/index.md index 82a90460c6..0e07d3ecb3 100644 --- a/files/ja/web/api/node/childnodes/index.md +++ b/files/ja/web/api/node/childnodes/index.md @@ -2,100 +2,73 @@ title: Node.childNodes slug: Web/API/Node/childNodes tags: - - API - - DOM - - DOMリファレンス - プロパティ - リファレンス + - 読み取り専用 +browser-compat: api.Node.childNodes translation_of: Web/API/Node/childNodes --- -

    {{ ApiRef() }}

    - -

    Node.childNodes読み取り専用プロパティは、最初の子ノードにインデックス0が割り当てられている、指定された要素の子{{domxref("Node","nodes")}}の現在の{{domxref("NodeList")}}を返します。

    - -

    構文

    - -
    let nodeList = elementNodeReference.childNodes;
    -
    - -

    - -

    簡単な使用方法

    - -
    // 変数pargは<p>要素へのオブジェクト参照です
    -
    -// まず、pargが子ノードを持っているかをチェックします
    -if (parg.hasChildNodes()) {
    -  var children = parg.childNodes;
    -
    -  for (let i = 0; i < children.length; i++) {
    -    // for文を使って各ノードにchildren[i]としてアクセスします
    -    // 注意! NodeListは不変ではないので、ノードを追加したり削除したりするとchildren.lengthは変化します
    -  }
    -}
    - -

    ノードから全ての子を削除する

    - -
    // これは一例ですが、この方法でノードからすべての子ノードを削除することができます
    -// let box = document.getElementById(/**/);
    -
    -while (box.firstChild) {
    -    // NodeListは不変ではないので、毎処理ごとにbox.firstChildは変化します
    -    box.removeChild(box.firstChild);
    -}
    - -

    注記

    - -

    ノードのコレクション内の項目はオブジェクトであり、文字列ではありません。node オブジェクトからデータを取得するには、そのプロパティ (たとえばelementNodeReference.childNodes[1].nodeName で名前を取得) を使用します。
    -
    - documentオブジェクト自体には Doctype 宣言と root 要素 の2つの子があり、通常はdocumentElementと呼ばれます。 ((X)HTML文書ではこれがHTML要素です)
    -
    - childNodesにはテキストノードやコメントノードなどの非要素ノードを含むすべての子ノードが含まれます。要素のみのコレクションを取得するには、代わりに{{domxref("ParentNode.children")}} を使用してください。

    - -

    仕様

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    仕様ステータスコメント
    {{SpecName('DOM WHATWG', '#dom-node-childnodes', 'Node.childNodes')}}{{Spec2('DOM WHATWG')}}変更なし
    {{SpecName('DOM3 Core', 'core.html#ID-1451460987', 'Node.childNodes')}}{{Spec2('DOM3 Core')}}変更なし
    {{SpecName('DOM2 Core', 'core.html#ID-1451460987', 'Node.childNodes')}}{{Spec2('DOM2 Core')}}変更なし
    {{SpecName('DOM1', 'level-one-core.html#ID-1451460987', 'Node.childNodes')}}{{Spec2('DOM1')}}初回定義
    - -

    ブラウザの互換性

    - -

    {{Compat("api.Node.childNodes")}}

    - -

    関連情報

    - -
      -
    • {{ domxref("Node.firstChild") }}
    • -
    • {{ domxref("Node.lastChild") }}
    • -
    • {{ domxref("Node.nextSibling") }}
    • -
    • {{ domxref("Node.previousSibling") }}
    • -
    • {{ domxref("Element.children") }}
    • -
    +{{APIRef("DOM")}} + +**`childNodes`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティであり、{{domxref("NodeList")}} で指定された要素の子{{domxref("Node", "ノード", "", 1)}}の生きたリストを返し、最初の子ノードは位置 `0` に割り当てられます。子ノードには要素、テキスト、コメントが含まれます。 + +> **Note:** {{domxref("NodeList")}} が生きたリストであるというのは、新しい子が追加されたり取り除かれたりするたびに、内容が変化するという意味です。 + +ノードのコレクションの項目はオブジェクトであり、文字列ではありません。ノードオブジェクトからデータを取得するには、そのプロパティを使用してください。例えば、最初の子ノードの名前を取得するには、 `elementNodeReference.childNodes[0].nodeName` を使うことで実現できます。 + +{{domxref("document")}} オブジェクト自体には 2 つの子があります。文書型宣言と、ルート要素、ふつうは `documentElement` として参照されます。 HTML 文書の場合、後者は {{HTMLElement("html")}} 要素です。 + +覚えておくべき重要なこととして、 `childNodes` には*すべての*子ノードが含まれ、テキストやコメントなどの要素以外のノードが含まれることです。 +要素のみが含まれるコレクションを取得するのであれば、 {{domxref("Element.children")}} を代わりに使用してください。 + +## 値 + +このノードの子を含む生きた {{domxref("NodeList")}} です。 + +> **Note:** `childNodes` を複数回呼び出しても、*同じ* {{domxref("NodeList")}} が返されます。 + +## 例 + +### 単純な使用方法 + +```js +// parg は

    要素へのオブジェクト参照です + +// まず、要素に子ノードがあるかどうかをチェックします +if (parg.hasChildNodes()) { + let children = parg.childNodes; + + for (let i = 0; i < children.length; i++) { + // それぞれの子を children[i] として処理します + // 注: リストは生きています。子を追加したり取り除いたりすると、リストの `length` が変わります + } +} +``` + +### ノードからすべてての子を削除 + +```js +// これはあるノードからすべての子を取り除くための一つの方法です +// box はある要素へのオブジェクト参照です + +while (box.firstChild) { + // リストは生きているので、呼び出されるたびにインデックスが変わります + box.removeChild(box.firstChild); +} +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Node.firstChild")}} +- {{domxref("Node.lastChild")}} +- {{domxref("Node.nextSibling")}} +- {{domxref("Node.previousSibling")}} +- {{domxref("Element.children")}} diff --git a/files/ja/web/api/node/firstchild/index.md b/files/ja/web/api/node/firstchild/index.md index 5a57be3ae9..504cd98284 100644 --- a/files/ja/web/api/node/firstchild/index.md +++ b/files/ja/web/api/node/firstchild/index.md @@ -2,45 +2,68 @@ title: Node.firstChild slug: Web/API/Node/firstChild tags: - - DOM - - Gecko - - Gecko DOM Reference - - Node + - プロパティ + - リファレンス +browser-compat: api.Node.firstChild translation_of: Web/API/Node/firstChild --- -

    - {{ApiRef}}
    -

    概要

    -

    ノードのツリーの中で最初の子ノード、もしくは子ノードがなければ null を返します。ノードが Document の場合は、その直接の子のリスト内の最初のノードを返します。

    -

    構文

    -
    var childNode = node.firstChild;
    -
    -
      -
    • childNode : node の最初の子ノードがあればその参照、無い場合は null
    • -
    -

    -

    次の例では firstChild の使用方法と、このプロパティを使用すると空白ノードがどのように影響するかをデモンストレーションしています。Gecko DOM に於ける空白の扱われ方についてより多くの情報を得るために、{{Anch("Notes")}} も参照してください。

    -
    <p id="para-01">
    -  <span>First span</span>
    -</p>
    -
    -<script type="text/javascript">
    -  var p01 = document.getElementById('para-01');
    -  alert(p01.firstChild.nodeName)
    -</script>
    -

    上記の例では alert は'#text'を表示します。なぜなら開始タグ <p> の末端と <span> の間にある空白を調整するためにテキストノードが挿入されているからです。どんな 空白、単一スペースから多数のスペース、改行、タブ等々、も #text ノードを挿入することになります。

    -

    その他の #text ノードは閉じタグ </span> と </p> の間に挿入されていみます。

    -

    もしこの空白がソースから取り除かれれば、#text ノードは挿入されず、span 要素は段落の最初の子ノードとなります。

    -
    <p id="para-01"><span>First span</span></p>
    -
    -<script type="text/javascript">
    -  var p01 = document.getElementById('para-01');
    -  alert(p01.firstChild.nodeName)
    -</script>
    -
    -

    今度は alert は 'SPAN' を表示するでしょう。

    -

    仕様書

    - +{{APIRef("DOM")}} + +**`firstChild`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティで、ツリー内におけるこのノードの最初の子、またはこのノードに子がない場合は `null` を返します。 + +このノードが {{domxref("Document")}} であった場合は、このプロパティは直接のこのリスト内で最初のノードを返します。 + +> **Note:** このプロパティはこのノードの最初の子であれば、あらゆる種類のノードを返します。 +> {{domxref("Text")}} または {{domxref("Comment")}} ノードになることがあります。 +> 他の要素の子である最初の {{domxref("Element")}} を取得したい場合は、 {{domxref("Element.firstElementChild")}} を使用することを検討してください。 + +## 値 + +{{domxref("Node")}}、または存在しなければ `null`。 + +## 例 + +次の例では `firstChild` の使用方法と、このプロパティを使用すると空白ノードがどのように影響するかを示しています。 + +```html +

    + 最初の span +

    + + +``` + +上記の例では[コンソール](/ja/docs/Web/API/console)に '#text' と表示されます。開始タグ `

    ` の末尾と `` タグとの間にある空白を調整するためにテキストノードが挿入されているためです。**あらゆる**[ホワイトスペース](/ja/docs/Web/API/Document_Object_Model/Whitespace)は、単一の空白から複数のスペース、改行、タブに至るまで、 1 つの `#text` ノードを生成します。 + +`#text` ノードはもう 1 つ、閉じタグ `` と `

    ` の間に挿入されます。 + +ホワイトスペースをソースから取り除くと、 #text ノードは挿入されず、 span 要素がその段落の最初の子になります。 + +```html +

    最初の span

    + + +``` + +コンソールには 'SPAN' と表示されるようになります。 + +`node.firstChild` が `#text` や `#comment` ノードを返す問題を回避するには、 {{domxref("Element.firstElementChild")}} を使用すると最初の要素ノードのみを返すことができます。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Element.firstElementChild")}} +- {{domxref("Node.lastChild")}} diff --git a/files/ja/web/api/node/lastchild/index.md b/files/ja/web/api/node/lastchild/index.md index e7f5626f3c..9e9d386274 100644 --- a/files/ja/web/api/node/lastchild/index.md +++ b/files/ja/web/api/node/lastchild/index.md @@ -2,27 +2,38 @@ title: Node.lastChild slug: Web/API/Node/lastChild tags: - - DOM - - Gecko - - Gecko DOM Reference - - Node + - プロパティ + - リファレンス + - 読み取り専用 +browser-compat: api.Node.lastChild translation_of: Web/API/Node/lastChild --- -
    - {{ApiRef}}
    -

    概要

    -

    lastChild はノードの子要素の内、最後のものを返します。

    -

    構文

    -
    var last_child = element.lastChild
    -
    -

    説明

    -

    lastChild として返されるのはノードです。その親が要素であるならば、子ノードは一般的に Element ノード、Text ノード、Comment ノード となります。子要素を持たない場合は null が返されます。

    -

    -
    var tr = document.getElementById("row1");  // table 要素の特定の行を取得
    -var corner_td = tr.lastChild;  // 特定の行の内、最後のセルを取得
    -
    -

    仕様書

    -
      -
    • {{Spec("http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-61AD09FB", "DOM Level 2: lastChild", "REC")}}
    • -
    • {{Spec("http://dom.spec.whatwg.org/#dom-node-lastchild", "DOM Standard: lastChild")}}
    • -
    +{{APIRef("DOM")}} + +**`lastChild`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティで、このノードの最後の子ノードを返します。 +親ノードが要素であった場合、子ノードはふつう、要素ノード、テキストノード、コメントノードの何れかです。 +子要素がない場合は `null` を返します。 + +## Value + +このノードの最後の子である {{domxref("Node")}}、または子ノードがなければ `null` です。 + +## 例 + +```js +const tr = document.getElementById("row1"); +const corner_td = tr.lastChild; +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Node.firstChild")}} +- {{domxref("Element.lastElementChild")}} diff --git a/files/ja/web/api/node/nextsibling/index.md b/files/ja/web/api/node/nextsibling/index.md index 1ff4c13cef..f310d8e456 100644 --- a/files/ja/web/api/node/nextsibling/index.md +++ b/files/ja/web/api/node/nextsibling/index.md @@ -2,86 +2,65 @@ title: Node.nextSibling slug: Web/API/Node/nextSibling tags: - - DOM - - Gecko - - Node - - 要更新 + - プロパティ + - リファレンス + - 読み取り専用 +browser-compat: api.Node.nextSibling translation_of: Web/API/Node/nextSibling --- -
    -
    -
    {{APIRef("DOM")}}
    -
    +{{APIRef("DOM")}} -

    Node.nextSibling という読み取り専用プロパティは指定したノードの親の{{domxref("Node.childNodes","子ノード")}}リスト内ですぐ次にあるノードを返し、指定したノードがリストで最後の場合は null を返します。

    -
    +**`nextSibling`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティで、指定されたノードの親の {{domxref("Node.childNodes","childNodes")}} の中で、そのすぐ次のノードを返します。または、指定されたノードが親要素の最後の子要素である場合は `null` を返します。 -

    構文

    +> **Note:** ブラウザーはソースのマークアップにあるホワイトスペースを表すために、文書に {{domxref("Text")}} ノードを挿入します。 +> そのため、例えば [`Node.firstChild`](/ja/docs/Web/API/Node/firstChild) や [`Node.previousSibling`](/ja/docs/Web/API/Node/previousSibling) を使用して得たノードが、取得しようとした実際のノードではなく、ホワイトスペースのテキストノードであることがあります。 +> +> [DOM でのホワイトスペース](/ja/docs/Web/API/Document_Object_Model/Whitespace)の記事に、この動作に関する詳しい情報があります。 +> +> {{domxref("Element.nextElementSibling")}} を使用すると、ホワイトスペースのノードや要素間のテキスト、コメントなどを飛ばして次の要素を取得することができます。 +> +> 子ノードのリストで反対方向に移動する場合は、 [Node.previousSibling](/ja/docs/Web/API/Node/previousSibling) を使用してください。 -
    nextNode = node.nextSibling
    -
    +## 値 -

    注記

    +現在のノードの次の兄弟ノードを表す {{domxref("Node")}}、または存在しない場合は `null` です。 -
    -

    Geckoベースのブラウザーはソースマークアップの中で空白を表現するためにテキストノードをドキュメントに挿入します。ですので、例えば Node.firstChildNode.previousSibling で得られるノードが、作者が取得しようとした実際の要素ではなく、空白のテキストノードを参照していることがあります。

    -

    より多くの情報を得るには『DOM 中の空白文字』と『W3C DOM 3 FAQ: Why are some Text nodes empty?』を参照してください。

    +## 例 -
     
    +```html +
    こちらは div-1 です。
    +
    こちらは div-2 です。
    +
    +計算結果がありません。 +``` -
    {{domxref("Element.nextElementSibling")}} は空白ノードを飛ばして次の要素を得るのに使われます。
    -
    +```js +let el = document.getElementById('div-1').nextSibling, +i = 1; -

    +let result = "div-1 の兄弟要素:
    "; -
    <div id="div-01">Here is div-01</div>
    -<div id="div-02">Here is div-02</div>
    +while (el) {
    +  result += i + '. ' + el.nodeName+"
    "; + el = el.nextSibling; + i++; +} -<script type="text/javascript"> -var el = document.getElementById('div-01').nextSibling, - i = 1; +const output = document.getElementsByTagName("output")[0]; +output.innerHTML = result; +``` -console.log('Siblings of div-01:'); +{{ EmbedLiveSample("Example", "100%", 500)}} -while (el) { - console.log(i + '. ' + el.nodeName); - el = el.nextSibling; - i++; -} +## 仕様書 -</script> +{{Specifications}} -/************************************************** - The following is written to the console as it loads: +## ブラウザーの互換性 - Siblings of div-01 +{{Compat}} - 1. #text - 2. DIV - 3. #text - 4. SCRIPT +## 関連情報 -**************************************************/
    - -

    上の例で、#text ノードがタグ間のマークアップ内に (つまり、 要素の閉じタグと次の開始タグの間) 空白がある DOM に挿入されているのが見られます。 document.write 文で挿入された要素の間には空白が作成されません。

    - -

    DOM にテキストノードが入りうるのは DOM が nextSibling を使って横断される時に許可されます。注記のセクションのリソースを見てください。

    - -

    仕様

    - - - -

    ブラウザ実装状況

    - - - -

    {{Compat("api.Node.nextSibling")}}

    - -

    関連情報

    - -
      -
    • {{domxref("Element.nextElementSibling")}}
    • -
    +- {{domxref("Element.nextElementSibling")}} +- {{domxref("Node.previousSibling")}} diff --git a/files/ja/web/api/node/nodetype/index.md b/files/ja/web/api/node/nodetype/index.md index 135f0f95c7..099e980805 100644 --- a/files/ja/web/api/node/nodetype/index.md +++ b/files/ja/web/api/node/nodetype/index.md @@ -2,87 +2,73 @@ title: Node.nodeType slug: Web/API/Node/nodeType tags: - - DOM - - Gecko - - Gecko DOM Reference + - プロパティ + - リファレンス + - 読み取り専用 +browser-compat: api.Node.nodeType translation_of: Web/API/Node/nodeType --- -
    - {{ApiRef}}
    -

    概要

    -

    ノードの種類を表す整数のコードを返します。

    -

    構文

    -
    var type = node.nodeType;
    -
    -

    type は以下の内の何れかの unsigned short 型の値となります。

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    名称
    ELEMENT_NODE1
    ATTRIBUTE_NODE {{deprecated_inline}}2
    TEXT_NODE3
    CDATA_SECTION_NODE {{deprecated_inline}}4
    ENTITY_REFERENCE_NODE {{deprecated_inline}}5
    ENTITY_NODE {{deprecated_inline}}6
    PROCESSING_INSTRUCTION_NODE7
    COMMENT_NODE8
    DOCUMENT_NODE9
    DOCUMENT_TYPE_NODE10
    DOCUMENT_FRAGMENT_NODE11
    NOTATION_NODE {{deprecated_inline}}12
    -

    -

    次の例は、ノードの最初の要素がコメントノードであるかをチェックし、そうでない場合にメッセージを表示するものです。

    -
    var node = document.documentElement.firstChild;
    -
    -if (node.nodeType != Node.COMMENT_NODE)
    -  console.log("※社内コーディングルールに沿ったコメントを記述して下さい。");
    -
    -

    仕様書

    - +{{APIRef("DOM")}} + +**`nodeType`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティであり、整数値でこのノードがなんであるかを識別します。これは様々なノードの種類、例えば {{domxref("Element", "elements")}}, {{domxref("Text", "text")}}, {{domxref("Comment", "comments")}} を見分けます。 + +## 値 + +整数値で、このノードの種類を識別します。可能な値は次の通りです。 + +- `Node.ELEMENT_NODE` (`1`) + - : {{HTMLElement("p")}} や {{HTMLElement("div")}} などの {{domxref("Element")}} ノードです。 +- `Node.ATTRIBUTE_NODE` (`2`) + - : {{domxref("Element")}} の {{domxref("Attr", "Attribute")}} ノードです。 +- `Node.TEXT_NODE` (`3`) + - : {{domxref("Element")}} や {{domxref("Attr")}} の中に存在する {{domxref("Text")}} です。 +- `Node.CDATA_SECTION_NODE`(`4`) + - : `` のような {{domxref("CDATASection")}} です。 +- `Node.PROCESSING_INSTRUCTION_NODE` (`7`) + - : `` のような XML 文書の {{domxref("ProcessingInstruction")}} です。 +- `Node.COMMENT_NODE` (`8`) + - : `` のような {{domxref("Comment")}} ノードです。 +- `Node.DOCUMENT_NODE` (`9`) + - : {{domxref("Document")}} ノードです。 +- `Node.DOCUMENT_TYPE_NODE` (`10`) + - : `` のような {{domxref("DocumentType")}} ノードです。 +- `Node.DOCUMENT_FRAGMENT_NODE` (`11`) + - : A {{domxref("DocumentFragment")}} node. + +`Node.ENTITY_REFERENCE_NODE` (`5`), `Node.ENTITY_NODE` (`6`), `Node.NOTATION_NODE` (`12`) は非推奨になっており、使用されなくなっています。 + +## 例 + +## 様々な種類のノード + +```js +document.nodeType === Node.DOCUMENT_NODE; // true +document.doctype.nodeType === Node.DOCUMENT_TYPE_NODE; // true + +document.createDocumentFragment().nodeType === Node.DOCUMENT_FRAGMENT_NODE; // true + +const p = document.createElement("p"); +p.textContent = "昔々…"; + +p.nodeType === Node.ELEMENT_NODE; // true +p.firstChild.nodeType === Node.TEXT_NODE; // true +``` + +### コメント + +次の例は、ノードの最初の要素がコメントノードであるかをチェックし、そうでない場合にメッセージを表示するものです。 + +```js +const node = document.documentElement.firstChild; +if (node.nodeType !== Node.COMMENT_NODE) { + console.warn("コメントを入れてください。"); +} +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} diff --git a/files/ja/web/api/node/nodevalue/index.md b/files/ja/web/api/node/nodevalue/index.md index 2cfbbf795f..2d254b0a33 100644 --- a/files/ja/web/api/node/nodevalue/index.md +++ b/files/ja/web/api/node/nodevalue/index.md @@ -2,80 +2,66 @@ title: Node.nodeValue slug: Web/API/Node/nodeValue tags: - - DOM - - Gecko - - Gecko DOM Reference - - Node + - プロパティ + - リファレンス +browser-compat: api.Node.nodeValue translation_of: Web/API/Node/nodeValue --- -
    - {{ApiRef}}
    -

    概要

    -

    ノードの値を取得または設定します。

    -

    構文

    -
    value = node.nodeValue
    -

    node.nodeValue が存在する場合、 value はノードの値を含む文字列です。

    -

    注記

    -

    document 自身は、 nodeValuenullを返します。text

    -

    ノード、 comment ノード、CDATA ノードでは、 nodeValue はノードの中身を返します。 attribute ノードは属性値を返します。

    -

     

    -

    以下の表は、 様々なノードの戻り値を表しています。

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Attrattribute の値
    CDATASectionCDATA Sectionの中身
    コメントcommentの中身
    Documentnull
    DocumentFragmentnull
    DocumentTypenull
    Elementnull
    NamedNodeMapnull
    EntityReferencenull
    Notationnull
    ProcessingInstructionターゲットを除く全体の内容
    Textthe text nodeの中身
    -

    nodeValuenull と定義されている場合、値を設定しても効果はありません。

    -

    仕様書

    - +{{APIRef("DOM")}} + +**`nodeValue`** は {{domxref("Node")}} インターフェイスのプロパティで、現在のノードの値を返したり設定したりします。 + +## Value + +もしあれば、現在のノードの値を含む文字列です。 +文書自身においては、 `nodeValue` は `null` を返します。 +テキスト、コメント、 CDATA ノードでは、 `nodeValue` はノードの内容を返します。 +属性ノードにおいては、属性の値が返します。 + +以下の表はノードの種類別の返値を表しています。 + +| ノード | nodeValue の値 | +| ------------------------------------ | ----------------------------------- | +| {{domxref("CDATASection")}} | CDATA セクションの中身 | +| {{domxref("Comment")}} | コメントの中身 | +| {{domxref("Document")}} | `null` | +| {{domxref("DocumentFragment")}} | `null` | +| {{domxref("DocumentType")}} | `null` | +| {{domxref("Element")}} | `null` | +| {{domxref("NamedNodeMap")}} | `null` | +| {{domxref("ProcessingInstruction")}} | 対象を除く内容物全体 | +| {{domxref("Text")}} | テキストノードの中身 | + +> **Note:** `nodeValue` が `null` になると定義されている場合は、設定しても効果がありません。 + +## 例 + +```html +
    Hello world
    + +結果が出ていません。 +``` + +また、以下のスクリプトを参照してください。 + +```js +let node = document.getElementsByTagName("body")[0].firstChild; +let result = "
    ノード名:
    "; +while (node) { + result += node.nodeName + "の値: " + node.nodeValue + "
    "; + node = node.nextSibling +} + +const output = document.getElementById("result"); +output.innerHTML = result; +``` + +{{ EmbedLiveSample("Example", "100%", "250")}} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} diff --git a/files/ja/web/api/node/ownerdocument/index.md b/files/ja/web/api/node/ownerdocument/index.md index f6eef4f570..75cf471b02 100644 --- a/files/ja/web/api/node/ownerdocument/index.md +++ b/files/ja/web/api/node/ownerdocument/index.md @@ -2,65 +2,35 @@ title: Node.ownerDocument slug: Web/API/Node/ownerDocument tags: - - DOM - - Gecko - - Node + - プロパティ + - リファレンス + - 読み取り専用 +browser-compat: api.Node.ownerDocument translation_of: Web/API/Node/ownerDocument --- -
    {{ApiRef}}
    +{{APIRef("DOM")}} -

    概要

    +**`ownerDocument`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティで、このノードの最上位の文書オブジェクトを返します。 -

    ownerDocument プロパティは、指定ノードを内包するノードツリーのトップレベルのドキュメントオブジェクトを返します。

    +## 値 -

    構文

    +すべての子ノードが作成された最上位の {{domxref("Document")}} オブジェクトです。 -
    document = element.ownerDocument
    -
    +このプロパティが文書自身のノードで使用された場合、値は `null` になります。 -
      -
    • document : 指定要素の祖先である {{domxref("document")}} オブジェクト
    • -
    +## 例 -

    +```js +// 指定された "p" から、文書オブジェクトの子である最上位の HTML を取得します。 -
    var doc = p.ownerDocument; // ノード p のノードツリー上のトップレベル document オブジェクトを取得
    -var html = doc.documentElement; // owner のドキュメント要素を取得
    +const d = p.ownerDocument;
    +const html = d.documentElement;
    +```
     
    -alert(html); // [object HTMLHtmlElement]
    -
    +## 仕様書 -

    注記

    +{{Specifications}} -

    このプロパティによって返される document オブジェクトは、実際の HTML 文書中ですべての子ノードの属するメインオブジェクトです。document ノード自身に対しこのプロパティを用いた場合、戻り値は null となります。

    +## ブラウザーの互換性 -

    仕様

    - - - - - - - - - - - - - - - - - - - - - - - - -
    SpecificationStatusComment
    {{SpecName("DOM4", "#dom-node-ownerdocument", "Node.ownerDocument")}}{{Spec2("DOM4")}} 
    {{SpecName("DOM3 Core", "core.html#node-ownerDoc", "Node.ownerDocument")}}{{Spec2("DOM3 Core")}}No change
    {{SpecName("DOM2 Core", "core.html#node-ownerDoc", "Node.ownerDocument")}}{{Spec2("DOM2 Core")}}Initial definition
    - -

    ブラウザ実装状況

    - -

    {{Compat("api.Node.ownerDocument")}}

    +{{Compat}} -- cgit v1.2.3-54-g00ecf From 068058eea2550a1b3da98a3a5af70bc9172d2be2 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sat, 26 Feb 2022 00:16:32 +0900 Subject: 2021/11/08 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/parentelement/index.md | 49 ++++----- files/ja/web/api/node/parentnode/index.md | 80 +++++++-------- files/ja/web/api/node/previoussibling/index.md | 81 ++++++++++----- files/ja/web/api/node/textcontent/index.md | 132 ++++++++++--------------- 4 files changed, 167 insertions(+), 175 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/node/parentelement/index.md b/files/ja/web/api/node/parentelement/index.md index e121601c07..8aa85b65f5 100644 --- a/files/ja/web/api/node/parentelement/index.md +++ b/files/ja/web/api/node/parentelement/index.md @@ -2,45 +2,36 @@ title: Node.parentElement slug: Web/API/Node/parentElement tags: - - DOM - - Element - - Node - - Property - - parent + - プロパティ + - リファレンス + - 読み取り専用 +browser-compat: api.Node.parentElement translation_of: Web/API/Node/parentElement --- -
    -
    {{APIRef("DOM")}}
    -
    +{{APIRef("DOM")}} -

    Node.parentElementのread-only プロパティはDOM ノード上の親の {{domxref("Element")}} を返します。親ノードが存在しない場合や親ノードが DOM {{domxref("Element")}} で無い場合、null が返ります。

    +**`parentElement`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティで、この DOM ノードの親である要素 ({{DOMxRef("Element")}}) を返します。このノードに親ノードがないか、親が DOM の {{DOMxRef("Element")}} でない場合は `null` を返します。 -

    構文

    +## 値 -
    parentElement = node.parentElement
    +現在のノードの親ノードである {{domxref("Element")}} を返します。そのようなものがない場合は `null` を返します。 -

    parentElementは現nodeの親elementです。型は必ずDOM {{domxref("Element")}} オブジェクトかnullです

    +## 例 -

    +```js +if (node.parentElement) { + node.parentElement.style.color = "red"; +} +``` -
    if (node.parentElement) {
    -  node.parentElement.style.color = "red";
    -}
    +## 仕様書 -

    仕様

    +{{Specifications}} -
      -
    • {{spec("http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#parent-element", "DOM Level 4: Node.parentElement", "WD")}}
    • -
    +## ブラウザーの互換性 -

    ブラウザ実装状況

    +{{Compat}} -

    {{Compat("api.Node.parentElement")}}

    +## 関連情報 -

    一部のブラウザーでは、parentElementプロパティは {{domxref("Element")}} ノードでのみ定義されており、特にテキストノードに対して定義されていない場合がある点に注意して下さい。

    - -

    関連情報

    - -
      -
    • {{domxref("Node.parentNode")}}
    • -
    +- {{domxref("Node.parentNode")}} diff --git a/files/ja/web/api/node/parentnode/index.md b/files/ja/web/api/node/parentnode/index.md index 33ea858b0c..d50c111b37 100644 --- a/files/ja/web/api/node/parentnode/index.md +++ b/files/ja/web/api/node/parentnode/index.md @@ -2,46 +2,46 @@ title: Node.parentNode slug: Web/API/Node/parentNode tags: - - DOM - - Gecko - - Gecko DOM Reference - - Node + - プロパティ + - リファレンス + - 読み取り専用 +browser-compat: api.Node.parentNode translation_of: Web/API/Node/parentNode --- -
    - {{ApiRef}}
    -

    概要

    -

    指定されたノードの DOM ツリー内の親ノードを返します。

    -

    構文

    -
    parentNode = node.parentNode
    -
    -
      -
    • parentNode : 指定ノードの親ノード。要素の親ノードは、Element ノード、Document ノード、または DocumentFragment になります。
    • -
    -

    -
    if (node.parentNode) {
    -  // ツリー上に既に存在しない場合を除き、
    -  // ツリーからノードを削除します。
    +{{APIRef("DOM")}}
    +
    +**`parentNode`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティで、 DOM ツリー内の特定のノードの親ノードを返します。
    +
    +`Document` および `DocumentFragment` [ノード](/ja/docs/Web/API/Node/nodeType)には親が付くことはないので、 `parentNode` は常に `null` になります。
    +ノードが生成されてからツリーに割り当てられていない場合も `null` を返します。
    +
    +## 値
    +
    +現在のノードの親に当たる {{domxref("Node")}} です。要素の親になるのは `Element` ノード、 `Document` ノード、 `DocumentFragment` ノードの何れかです。
    +
    +## 例
    +
    +```js
    +if (node.parentNode) {
    +  // ノードがツリーの中にある場合は、ツリーから取り除く
       node.parentNode.removeChild(node);
    -}
    -

    注記

    -

    parentNode は、以下のノードタイプについては null を返します : AttrDocumentDocumentFragmentEntityNotation

    -

    また、ノードが作成された直後でまだツリーに加えられていない場合も null を返します。

    -

    ブラウザ実装状況

    - -

    {{Compat("api.Node.parentNode")}}

    - -

    仕様書

    - -

    関連情報

    -
      -
    • {{Domxref("element.firstChild")}}
    • -
    • {{Domxref("element.lastChild")}}
    • -
    • {{Domxref("element.childNodes")}}
    • -
    • {{Domxref("element.nextSibling")}}
    • -
    • {{Domxref("element.previousSibling")}}
    • -
    • {{Domxref("Node.removeChild")}}
    • -
    +} +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{Domxref("Node.firstChild")}} +- {{Domxref("Node.lastChild")}} +- {{Domxref("Node.childNodes")}} +- {{Domxref("Node.nextSibling")}} +- {{Domxref("Node.parentElement")}} +- {{Domxref("Node.previousSibling")}} +- {{Domxref("Node.removeChild")}} diff --git a/files/ja/web/api/node/previoussibling/index.md b/files/ja/web/api/node/previoussibling/index.md index 5506f5fd86..cec77e3af9 100644 --- a/files/ja/web/api/node/previoussibling/index.md +++ b/files/ja/web/api/node/previoussibling/index.md @@ -2,41 +2,74 @@ title: Node.previousSibling slug: Web/API/Node/previousSibling tags: - - DOM - - Gecko - - Node + - プロパティ + - リファレンス + - 読み取り専用 +browser-compat: api.Node.previousSibling translation_of: Web/API/Node/previousSibling --- -
    {{ApiRef}}
    +{{APIRef("DOM")}} -

    概要

    +**`previousSibling`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティで、指定されたノードの親ノードの {{domxref("Node.childNodes", "childNodes")}} リスト内で、直前にある ノードを返します。指定されたノードがリストの先頭にあった倍は `null` を返します。 -

    指定のノードの親ノードの childNodes リストの中で直前のノードを返します。また、指定のノードがそのリストの中で先頭の場合は null を返します。

    +> **Note:** ブラウザーはソースのマークアップにあるホワイトスペースを表すために、文書にテキストノードを挿入します。 +> そのため、例えば [`Node.firstChild`](/ja/docs/Web/API/Node/firstChild) や `Node.previousSibling` を使用して得たノードが、取得しようとした実際のノードではなく、ホワイトスペースのテキストノードであることがあります。 +> +> [DOM でのホワイトスペース](/ja/docs/Web/API/Document_Object_Model/Whitespace)の記事に、この動作に関する詳しい情報があります。 +> +> [`previousElementSibling`](/ja/docs/Web/API/Element/previousElementSibling) を使用すると、(テキストノードやその他の要素以外のノードを飛ばして)次の要素を取得することができます。 +> +> 子ノードのリストで反対方向に移動する場合は、 [Node.nextSibling](/ja/docs/Web/API/Node/nextSibling) を使用してください。 -

    構文

    +## 値 -
    previousNode = node.previousSibling;
    -
    +現在のノードの直前のノードを表す {{domxref("Node")}} です。 +存在しない場合は `null` です。 -

    +## 例 -
    // <a><b1 id="b1"/><b2 id="b2"/></a>
    +次の例では、要素にテキストノードがある場合とない場合の `previousSibling` の動作を示しています。
     
    -alert( document.getElementById("b1").previousSibling ); // null
    -alert( document.getElementById("b2").previousSibling.id ); // "b1"
    -
    +### 最初の例 -

    注記

    +この例では、一連の `img` 要素が互いに隣り合っており、その間にホワイトスペースがありません。 -

    Geckoベースのブラウザーはソースマークアップの中で空白を表現するためにテキストノードをドキュメントに挿入します。ですので、例えば Node.firstChildNode.previousSibling で得られるノードが、作者が取得しようとした実際の要素ではなく、空白のテキストノードを参照していることがあります。

    -

    より多くの情報を得るには『DOM 中の空白文字』と『W3C DOM 3 FAQ: Why are some Text nodes empty?』を参照してください。

    +```html + +``` -

    childNode リスト内の、指定ノードの次のノードの取得には {{domxref("Node.nextSibling")}} を用います。

    +```js +document.getElementById("b1").previousSibling; // +document.getElementById("b2").previousSibling.id; // "b1" +``` -

    仕様書

    +### 2 番目の例 - +この例では、 `img` 要素の間にホワイトスペースのテキストノード(改行)があります。 + +```html + + + +``` + +```js +document.getElementById("b1").previousSibling; // #text +document.getElementById("b1").previousSibling.previousSibling; // +document.getElementById("b2").previousSibling.previousSibling; // +document.getElementById("b2").previousSibling; // #text +document.getElementById("b2").previousSibling.id; // undefined +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Node.nextSibling")}} +- {{domxref("Element.previousElementSibling")}} diff --git a/files/ja/web/api/node/textcontent/index.md b/files/ja/web/api/node/textcontent/index.md index 3f90221d9f..1777a5cd21 100644 --- a/files/ja/web/api/node/textcontent/index.md +++ b/files/ja/web/api/node/textcontent/index.md @@ -2,112 +2,80 @@ title: Node.textContent slug: Web/API/Node/textContent tags: - - API - - DOM - - Node - - Property - - Reference - プロパティ + - リファレンス +browser-compat: api.Node.textContent translation_of: Web/API/Node/textContent --- -
    {{APIRef("DOM")}}
    +{{APIRef("DOM")}} -

    textContent は {{domxref ("Node")}} のプロパティで、ノードおよびその子孫のテキストの内容を表します。

    +**`textContent`** は {{domxref ("Node")}} のプロパティで、ノードおよびその子孫のテキストの内容を表します。 -
    -

    メモ: textContent と {{domxref("HTMLElement.innerText")}} は混同しやすいものですが、2つのプロパティは重要な点が異なります

    -
    +> **Note:** `textContent` と {{domxref("HTMLElement.innerText")}} は混同しやすいものですが、 2 つのプロパティは[重要な点が異なります](#innertext_との違い)。 -

    構文

    +## 値 -
    let text = someNode.textContent
    -someOtherNode.textContent = string
    -
    +文字列または {{jsxref("null")}} です。値は場面によります。 -

    +- ノードが {{domxref("document")}} または {{glossary("doctype")}} である場合、 `textContent` は {{jsxref("null")}} を返します。 -

    文字列または {{jsxref("null")}}

    + > **Note:** 文書全体の*すべての*テキストと [CDATA データ](/ja/docs/Web/API/CDATASection)を取得するには、 `document.documentElement.textContent` を使用する方法があります。 -

    説明

    +- ノードが [CDATA セクション](/ja/docs/Web/API/CDATASection)、コメント、[処理命令ノード](/ja/docs/Web/API/ProcessingInstruction)、 [テキストノード](/ja/docs/Web/API/Text)の場合、 `textContent` はそのノードの内側のテキスト、すなわち {{domxref("Node.nodeValue")}} を返します。 +- 他のノード型の場合、`textContent` は、コメントと処理命令ノードを除く、すべての子ノードの `textContent` 属性値を連結したものを返します。(ノードが子を持たない場合、これは空文字列になります。) -

    textContent の値は状況によります。

    +> **Warning:** ノードの `textContent` を設定すると、そのノードの*すべて*の子が取り除かれて、指定された値を持つ単一のテキストノードに置き換わります。 -
      -
    • ノードが {{domxref("document")}} または {{glossary("Doctype")}} である場合、 textContent は {{jsxref("null")}} を返します。 +### innerText との違い -
      メモ: 文書全体のすべてのテキストと CDATA データを取得するには、 document.documentElement.textContent を使用する方法があります。
      -
    • -
    • ノードが CDATA セクション、コメント、処理命令ノードテキストノードの場合、 textContent はそのノードの内側のテキスト、すなわち {{domxref("Node.nodeValue")}} を返します。
    • -
    • 他のノードタイプの場合、textContent は、コメントと処理命令ノードを除く、すべての子ノードの textContent 属性値を連結したものを返します。 (ノードが子を持たない場合、これは空文字列になります。)
    • -
    +`Node.textContent` と {{domxref("HTMLElement.innerText")}} の間の違いに混乱しないでください。名前は似ているようですが、重要な違いがあります。 -

    ノードの textContent を設定すると、そのノードのすべての子が取り除かれて、指定された値をもつ単一のテキストノードに置き換わります。

    +- `textContent` は、 {{HTMLElement("script")}} と {{HTMLElement("style")}} 要素を含む、*すべて*の要素の中身を取得します。一方、 `innerText` は「人間が読める」要素のみを示します。 +- `textContent` はノード内のすべての要素を返します。一方、 `innerText` はスタイルを反映し、「非表示」の要素のテキストは返しません。 -

    innerText との違い

    + - もっと言えば、 `innerText` は CSS のスタイルを考慮するので、 `innerText` の値を読み取ると最新の計算されたスタイルを保証するために {{glossary("Reflow", "再フロー")}} を起動します。 (再フローは計算が重いので、可能であれば避けるべきです。) -

    Node.textContent と {{domxref("HTMLElement.innerText")}} の間の違いに混乱しないでください。名前は似ているようですが、重要な違いがあります。

    +- `textContent` とは異なり、 `innerText` を Internet Explorer (バージョン 11 まで) で変更すると、要素から子ノードを削除するだけでなく、子孫のテキストノードを*完全に破棄します*。他の要素または同じ要素にノードをもう一度挿入することは不可能です。 -
      -
    • textContent は、 {{HTMLElement("script")}} と {{HTMLElement("style")}} 要素を含む、すべての要素の内容を取得します。一方、 innerText は「人間が読める」要素のみを示します。
    • -
    • textContent はノード内のすべての要素を返します。一方、 innerText はスタイルを反映し、「非表示」の要素のテキストを返しません。 -
        -
      • もっと言えば、 innerText は CSS のスタイルを考慮するので、 innerText の値を読み取ると最新の計算されたスタイルを保証するために {{glossary("Reflow", "再フロー")}} を起動します。 (再フローは計算が重いので、可能であれば避けるべきです。)
      • -
      -
    • -
    • textContent とは異なり、 innerText を Internet Explorer (バージョン 11 まで) で変更すると、要素から子ノードを削除するだけでなく、子孫のテキストノードを完全に破棄します。他の要素または同じ要素にノードをもう一度挿入することは不可能です。
    • -
    +### innerHTML との違い -

    innerHTML との違い

    +{{domxref("Element.innerHTML")}} は、その名が示すとおり HTML を返します。時に、 `innerHTML` を使用して要素内のテキストを受け取ったり書き込んだりすることがありますが、 `textContent` は値が HTML として解析されないので性能が良くなります。 -

    {{domxref("Element.innerHTML")}} は、その名が示すとおり HTML を返します。時に、 innerHTML を使用して要素内のテキストを受け取ったり書き込んだりすることがありますが、 textContent は値が HTML として解析されないので性能が良くなります。

    +さらに、`textContent` を使用することで {{glossary("Cross-site_scripting", "XSS 攻撃")}}を防ぐことができます。 -

    さらに、textContent を使用することで {{glossary("Cross-site_scripting", "XSS 攻撃")}}を防ぐことができます。

    +## 例 -

    +以下のような HTML の断片があります。 -

    以下のような HTML の断片があります。

    +```html +
    This is some text!
    +``` -
    <div id="divA">This is <span>some</span> text!</div>
    +... `textContent` を使用して、要素のテキストの内容を取得することができます。 -

    ... textContent を使用して、要素のテキストの内容を取得することができます。

    +```js +let text = document.getElementById('divA').textContent; +// 変数 text の値は 'This is some text!' となります。 +``` -
    let text = document.getElementById('divA').textContent;
    -// 変数 text の値は 'This is some text!' となります。
    +... また、要素のテキストを設定します。 -

    ... また、要素のテキストを設定します。

    - -
    document.getElementById('divA').textContent = 'This text is different!';
    +```js
    +document.getElementById('divA').textContent = 'This text is different!';
     // divA の HTML は次のようになります。
    -// <div id="divA">This text is different!</div>
    -
    - -

    仕様書

    - - - - - - - - - - - - - - - - -
    仕様書状態備考
    {{SpecName('DOM WHATWG','#dom-node-textcontent','Node.textContent')}}{{Spec2('DOM WHATWG')}}
    - -

    ブラウザーの互換性

    - -

    {{Compat("api.Node.textContent")}}

    - -

    関連情報

    - - +//
    This text is different!
    +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("HTMLElement.innerText")}} +- {{domxref("Element.innerHTML")}} +- [More on differences between `innerText` and `textContent`](http://perfectionkills.com/the-poor-misunderstood-innerText/) (ブログ投稿) -- cgit v1.2.3-54-g00ecf From ed80f378403bc2760e37b274c78e6629836d36f8 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 27 Feb 2022 12:26:02 +0900 Subject: 2021/11/08 時点の英語版に基づき新規翻訳 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/baseuri/index.md | 67 ++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 files/ja/web/api/node/baseuri/index.md (limited to 'files/ja') diff --git a/files/ja/web/api/node/baseuri/index.md b/files/ja/web/api/node/baseuri/index.md new file mode 100644 index 0000000000..053fadb866 --- /dev/null +++ b/files/ja/web/api/node/baseuri/index.md @@ -0,0 +1,67 @@ +--- +title: Node.baseURI +slug: Web/API/Node/baseURI +tags: + - Node + - プロパティ + - 読み取り専用 +browser-compat: api.Node.baseURI +translation_of: Web/API/Node/baseURI +--- +{{APIRef("DOM")}} + +**`baseURI`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティで、このノードを含む文書の絶対的なベース URL を返します。 + +ベース URL はブラウザーが絶対 URL を必要とするときに、相対 URL を解決するために使用されます。例えば、 HTML の {{HTMLElement("img")}} 要素の `src` 属性や、 SVG の `xlink:href` や `href` 属性を処理する場合などです。 + +このプロパティは読み取り専用ですが、値はプロパティがアクセスされるたびにアルゴリズムで決まりますので、状況が変化すると変化することがあります。 + +ベース URL は次のように決まります。 + +1. 既定で、ベース URL は文書の位置({{domxref("window.location")}} で指定された通り)となります。 +2. これが HTML 文書であり、文書に {{HTMLElement("Base")}} 要素があった場合、*最初の* `Base` 要素の `href` の値があれば、代わりに使用されます。 + +## 値 + +{{domxref("Node")}} のベース URL を表す文字列です。 + +## 例 + +### \ なし + +```html +Not calculated +``` + +```js +const output = document.getElementsByTagName("output")[0]; +output.value = output.baseURI; +``` + +{{EmbedLiveSample("Without ", "100%", 40)}} + +### \ あり + +```html + +Not calculated +``` + +```js +const output = document.getElementsByTagName("output")[0]; +output.value = output.baseURI; +``` + +{{EmbedLiveSample("With ", "100%", 40)}} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{HTMLElement("base")}} 要素 -- cgit v1.2.3-54-g00ecf From 9a01a5446e5c02cb66cb0c4423daf4a3a50f6453 Mon Sep 17 00:00:00 2001 From: Niedziolka Michal <100634371+NiedziolkaMichal@users.noreply.github.com> Date: Sat, 5 Mar 2022 22:44:53 +0100 Subject: Fix for vertical-align examples in Dark Mode (#4401) * Fix for vertical-align examples in Dark Mode * Removed empty parameter Co-authored-by: Claas Augner * Removed empty parameter Co-authored-by: Claas Augner * Fix for other locale * Revert "Fix for other locale" This reverts commit 2e7b836b3a4fbbbe4d0150e14e4e55f4f75f9c04. * Fixed for other locale, without idea files * Removed invalid quote * Changed 100% to 1200px * Removed quotes Co-authored-by: Claas Augner --- files/de/web/css/vertical-align/index.html | 4 ++-- files/ja/web/css/vertical-align/index.md | 4 ++-- files/ko/web/css/vertical-align/index.html | 4 ++-- files/pt-br/web/css/vertical-align/index.html | 4 ++-- files/ru/web/css/vertical-align/index.html | 4 ++-- files/zh-cn/web/css/vertical-align/index.html | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) (limited to 'files/ja') diff --git a/files/de/web/css/vertical-align/index.html b/files/de/web/css/vertical-align/index.html index 43d76f8a1d..dc247353c5 100644 --- a/files/de/web/css/vertical-align/index.html +++ b/files/de/web/css/vertical-align/index.html @@ -61,7 +61,7 @@ p { -

    {{EmbedLiveSample("vertical-align-inline", 1200, 120, "", "", "example-outcome-frame")}}

    +

    {{EmbedLiveSample("vertical-align-inline", 1200, 160)}}

    • Um den Inhalt einer Zelle vertikal in einer Tabelle auszurichten:
    • @@ -100,7 +100,7 @@ td { -

      {{EmbedLiveSample("vertical-align-table", 1200, 210, "", "", "example-outcome-frame")}}

      +

      {{EmbedLiveSample("vertical-align-table", 1200, 230)}}

      Beachte, dass sich vertical-align nur auf inline- und Tabellenzellenelemente bezieht: es kann nicht eingesetzt werden um Block-level Elemente auszurichten.

      diff --git a/files/ja/web/css/vertical-align/index.md b/files/ja/web/css/vertical-align/index.md index 5ae9631f82..4f69ef7e47 100644 --- a/files/ja/web/css/vertical-align/index.md +++ b/files/ja/web/css/vertical-align/index.md @@ -174,7 +174,7 @@ p { #### 結果 -{{EmbedLiveSample("Vertical_alignment_in_a_line_box", '100%', 160, "", "")}} +{{EmbedLiveSample("Vertical_alignment_in_a_line_box", 1200, 160)}}

      表のセル内での垂直方向の配置

      @@ -218,7 +218,7 @@ td { #### 結果 -{{EmbedLiveSample("Vertical_alignment_in_a_table_cell", '100%', 230, "", "")}} +{{EmbedLiveSample("Vertical_alignment_in_a_table_cell", 1200, 230)}} ## 仕様書 diff --git a/files/ko/web/css/vertical-align/index.html b/files/ko/web/css/vertical-align/index.html index 0a139fbc61..92475d81e3 100644 --- a/files/ko/web/css/vertical-align/index.html +++ b/files/ko/web/css/vertical-align/index.html @@ -79,7 +79,7 @@ p { -

      {{EmbedLiveSample("vertical-align-inline", 1200, 120, "", "", "example-outcome-frame")}}

      +

      {{EmbedLiveSample("vertical-align-inline", 1200, 160)}}

      • table의 한 셀에서 포함하고 있는 내용을 수직 정렬할 때:
      • @@ -118,7 +118,7 @@ td { -

        {{EmbedLiveSample("vertical-align-table", 1200, 210, "", "", "example-outcome-frame")}}

        +

        {{EmbedLiveSample("vertical-align-table", 1200, 230)}}

        vertical-align은 오로지 inline과 table-cell 엘리먼트에만 적용된다는 것에 주의하세요: 이 속성을 block level 엘리먼트에 사용할 수 없습니다.

        diff --git a/files/pt-br/web/css/vertical-align/index.html b/files/pt-br/web/css/vertical-align/index.html index 5461771c73..623c7deb34 100644 --- a/files/pt-br/web/css/vertical-align/index.html +++ b/files/pt-br/web/css/vertical-align/index.html @@ -79,7 +79,7 @@ p { -

        {{EmbedLiveSample("vertical-align-inline", 1200, 120, "", "", "example-outcome-frame")}}

        +

        {{EmbedLiveSample("vertical-align-inline", 1200, 160)}}

        • Para alinhar verticalmente o conteudo de uma celula em uma tabela:
        • @@ -118,7 +118,7 @@ td { -

          {{EmbedLiveSample("vertical-align-table", 1200, 210, "", "", "example-outcome-frame")}}

          +

          {{EmbedLiveSample("vertical-align-table", 1200, 230)}}

          Observe que  vertical-align é aplicado apenas em elementos inline e table-cell: Você não pode usar isso para alinhar verticalmente elementos de nível de bloco.

          diff --git a/files/ru/web/css/vertical-align/index.html b/files/ru/web/css/vertical-align/index.html index 9074a6000f..99f06f3732 100644 --- a/files/ru/web/css/vertical-align/index.html +++ b/files/ru/web/css/vertical-align/index.html @@ -75,7 +75,7 @@ p { -

          {{EmbedLiveSample("vertical-align-inline", 1200, 120, "", "", "example-outcome-frame")}}

          +

          {{EmbedLiveSample("vertical-align-inline", 1200, 160)}}

          • Для вертикального позиционирования содержимого ячейки таблицы:
          • @@ -109,7 +109,7 @@ td { -

            {{EmbedLiveSample("vertical-align-table", 1200, 210, "", "", "example-outcome-frame")}}

            +

            {{EmbedLiveSample("vertical-align-table", 1200, 230)}}

            Обратите внимание: свойство vertical-align применяется только к строчным элементам и элементам ячеек таблицы: его нельзя использовать для вертикального позиционирования блочных элементов.

            diff --git a/files/zh-cn/web/css/vertical-align/index.html b/files/zh-cn/web/css/vertical-align/index.html index 3c55e414be..14acdecb59 100644 --- a/files/zh-cn/web/css/vertical-align/index.html +++ b/files/zh-cn/web/css/vertical-align/index.html @@ -60,7 +60,7 @@ p {
            -

            {{EmbedLiveSample("vertical-align-inline", 1200, 120, "", "", "example-outcome-frame")}}

            +

            {{EmbedLiveSample("vertical-align-inline", 1200, 160)}}

            • 垂直对齐表格单元内容:
            • @@ -99,7 +99,7 @@ td { -

              {{EmbedLiveSample("vertical-align-table", 1200, 210, "", "", "example-outcome-frame")}}

              +

              {{EmbedLiveSample("vertical-align-table", 1200, 230)}}

              注意 vertical-align 只对行内元素、行内块元素和表格单元格元素生效:不能用它垂直对齐块级元素

              -- cgit v1.2.3-54-g00ecf From 8e8d92a50f74b5370984259dc963dac56cc5902b Mon Sep 17 00:00:00 2001 From: MDN Date: Sun, 6 Mar 2022 00:13:06 +0000 Subject: [CRON] sync translated content --- files/ja/_redirects.txt | 5 +- files/ja/_wikihistory.json | 20 ++-- .../web/api/navigator/online/index.html | 127 +++++++++++++++++++++ .../navigator/online_and_offline_events/index.html | 127 --------------------- files/ko/_redirects.txt | 5 +- files/ko/web/api/navigator/online/index.html | 108 ++++++++++++++++++ .../navigator/online_and_offline_events/index.html | 107 ----------------- 7 files changed, 251 insertions(+), 248 deletions(-) create mode 100644 files/ja/conflicting/web/api/navigator/online/index.html delete mode 100644 files/ja/web/api/navigator/online_and_offline_events/index.html create mode 100644 files/ko/web/api/navigator/online/index.html delete mode 100644 files/ko/web/api/navigator/online_and_offline_events/index.html (limited to 'files/ja') diff --git a/files/ja/_redirects.txt b/files/ja/_redirects.txt index 98461ee39d..82f79f7a60 100644 --- a/files/ja/_redirects.txt +++ b/files/ja/_redirects.txt @@ -2811,7 +2811,7 @@ /ja/docs/Notification_object/tag /ja/docs/Web/API/Notification/tag /ja/docs/Notification_object/title /ja/docs/Web/API/Notification/title /ja/docs/Offline_resources_in_Firefox/Using_audio_and_video_in_Firefox /ja/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content -/ja/docs/Online_and_offline_events /ja/docs/Web/API/Navigator/Online_and_offline_events +/ja/docs/Online_and_offline_events /ja/docs/conflicting/Web/API/Navigator/onLine /ja/docs/Other_JavaScript_tools /ja/docs/Tools /ja/docs/Parsing_and_serializing_XML /ja/docs/Web/Guide/Parsing_and_serializing_XML /ja/docs/Plugins/Guide/Constants /ja/docs/Glossary/Plugin @@ -3182,6 +3182,7 @@ /ja/docs/Web/API/MediaStreamConstraints /ja/docs/conflicting/Web/API/MediaDevices/getUserMedia /ja/docs/Web/API/MouseEvent/which /ja/docs/Web/API/UIEvent/which /ja/docs/Web/API/Navigator.getUserMedia /ja/docs/Web/API/Navigator/getUserMedia +/ja/docs/Web/API/Navigator/Online_and_offline_events /ja/docs/conflicting/Web/API/Navigator/onLine /ja/docs/Web/API/NavigatorID /ja/docs/Web/API/Navigator /ja/docs/Web/API/NavigatorID/appCodeName /ja/docs/Web/API/Navigator/appCodeName /ja/docs/Web/API/NavigatorID/appName /ja/docs/Web/API/Navigator/appName @@ -3193,7 +3194,7 @@ /ja/docs/Web/API/NavigatorLanguage.languages /ja/docs/Web/API/Navigator/languages /ja/docs/Web/API/NavigatorLanguage/language /ja/docs/Web/API/Navigator/language /ja/docs/Web/API/NavigatorLanguage/languages /ja/docs/Web/API/Navigator/languages -/ja/docs/Web/API/NavigatorOnLine/Online_and_offline_events /ja/docs/Web/API/Navigator/Online_and_offline_events +/ja/docs/Web/API/NavigatorOnLine/Online_and_offline_events /ja/docs/conflicting/Web/API/Navigator/onLine /ja/docs/Web/API/NavigatorOnLine/onLine /ja/docs/Web/API/Navigator/onLine /ja/docs/Web/API/NavigatorStorage /ja/docs/orphaned/Web/API/NavigatorStorage /ja/docs/Web/API/NavigatorStorage/storage /ja/docs/orphaned/Web/API/NavigatorStorage/storage diff --git a/files/ja/_wikihistory.json b/files/ja/_wikihistory.json index eab8b35361..acf6f16c9e 100644 --- a/files/ja/_wikihistory.json +++ b/files/ja/_wikihistory.json @@ -18689,16 +18689,6 @@ "fscholz" ] }, - "Web/API/Navigator/Online_and_offline_events": { - "modified": "2019-03-23T23:53:08.504Z", - "contributors": [ - "chrisdavidmills", - "ethertank", - "Marsf", - "Mgjbot", - "Koyamak" - ] - }, "Web/API/Navigator/activeVRDisplays": { "modified": "2020-10-15T21:47:31.877Z", "contributors": [ @@ -48425,6 +48415,16 @@ "e53e04ac" ] }, + "conflicting/Web/API/Navigator/onLine": { + "modified": "2019-03-23T23:53:08.504Z", + "contributors": [ + "chrisdavidmills", + "ethertank", + "Marsf", + "Mgjbot", + "Koyamak" + ] + }, "conflicting/Web/API/Pointer_events": { "modified": "2019-03-18T20:45:32.564Z", "contributors": [ diff --git a/files/ja/conflicting/web/api/navigator/online/index.html b/files/ja/conflicting/web/api/navigator/online/index.html new file mode 100644 index 0000000000..e30c9d6c63 --- /dev/null +++ b/files/ja/conflicting/web/api/navigator/online/index.html @@ -0,0 +1,127 @@ +--- +title: オンライン・オフラインイベント +slug: conflicting/Web/API/Navigator/onLine +tags: + - AJAX + - DOM + - HTML5 + - Intermediate + - NeedsUpdate + - Offline web applications + - Web Development +translation_of: Web/API/Navigator/Online_and_offline_events +original_slug: Web/API/Navigator/Online_and_offline_events +--- +

              一部のブラウザーは、 Online/Offline イベントWHATWG Web Applications 1.0 仕様書に従って実装しています。

              + +

              概要

              + +

              オフラインに対応した良いウェブアプリケーションを構築するためには、アプリケーションが実際にオフラインになったタイミングを知る必要があります。また、アプリケーションが「オンライン」の状態に復帰したタイミングも知る必要があります。要件を分解すると次のようになります。

              + +
                +
              1. サーバーとの再同期ができるように、ユーザーがオンラインに戻ったタイミングを知る必要があります。
              2. +
              3. サーバーへのリクエストを後回しにすることができるように、ユーザーがオフラインなったタイミングを知る必要があります。
              4. +
              + +

              オンライン/オフラインイベントがこのプロセスを一般化するのに役立ちます。

              + +

              残念ながら、これらのイベントは完全には信頼できません。より高い信頼性が必要な場合や、 API がブラウザーに実装されていない場合は、サービスワーカーを使用したり XMLHttpRequest からのレスポンスを使用するなど、他の兆候を利用してオフラインであるかどうかを検出することができます。

              + +

              API

              + + + +

              navigator.onLine は、 true/false の値を保持しているプロパティです (オンラインの場合は true、オフラインの場合は false)。

              + +

              このプロパティは、ユーザーが「オフラインモード」に切り替えたとき (Firefox の場合は、ファイル→オフライン作業) に更新されます。さらに、このプロパティは、ブラウザーがネットワークに接続できなくなったときに更新されます。仕様書によれば、次のようになっています。

              + +
              + navigator.onLine 属性はユーザーがリンクを辿ったり、スクリプトが外部のページをリクエストしたりしたときにユーザーエージェントがネットワークで通信できない場合 (またはそのような試みが失敗した場合) は、必ず false を返す必要があります。
              + +

              Firefox 2 はこのプロパティをブラウザーのオフラインモードが切り替わる度に更新します。 Firefox 41 は、 Windows、 Linux、 OS X においてネットワークの接続状態が変化したときにも更新します。

              + +

              このプロパティは Firefox と Internet Explorer の古いバージョンにも存在しました。 (この仕様はこれらの先行的な実装に基づいています)。従って、今すぐこのプロパティを使い始めることができます。ネットワーク状態の自動判断は Firefox 2 にて実装されました。

              + +

              "online" および "offline" イベント

              + +

              Firefox 3 は 2 つの新しいイベントを導入しました。"online" and "offline" です。これらの 2 つのイベントは、ブラウザーのオンラインおよびオフラインモードが切り替わるたびに、各ページの <body> に発行されます。加えて、このイベントは document.body から document へとバブリングし、 window までたどり着きます。これらのイベントはキャンセルできません (ユーザーのオンラインモードやオフラインモードへの移行を防ぐことはできません)。

              + +

              Firefox 41 では、 Windows, Linux, OS X においてネットワークの接続状態が変化したことを OS が通知したときに、これらのイベントが発行されます。

              + +

              これらのイベントに対するリスナーは、いくつかのお馴染みの方法で登録することができます。

              +
                +
              • addEventListener を、 window, document, document.body に対して使用します。
              • +
              • document または document.body.ononline または .onoffline プロパティを JavaScript の Function オブジェクトに設定します。(注意: window.ononline または window.onoffline は互換性の理由で動作しません)
              • +
              • HTML マークアップで <body> タグの ononline="..." または onoffline="..." 属性を指定します。
              • +
              + +

              + +

              イベントが機能しているかどうかを確認するために、簡単なテストケースを用意しました (イベントリスナーを document.body に代入しているため、 Chrome では動作しません)。

              + +

              こちらが JavaScript 部分です。

              + +
              window.addEventListener('load', function() {
              +  var status = document.getElementById("status");
              +  var log = document.getElementById("log");
              +
              +  function updateOnlineStatus(event) {
              +    var condition = navigator.onLine ? "online" : "offline";
              +
              +    status.className = condition;
              +    status.innerHTML = condition.toUpperCase();
              +
              +    log.insertAdjacentHTML("beforeend", "Event: " + event.type + "; Status: " + condition);
              +  }
              +
              +  window.addEventListener('online',  updateOnlineStatus);
              +  window.addEventListener('offline', updateOnlineStatus);
              +});
              + +

              CSS 部分です。

              + +
              #status {
              +  position: fixed;
              +  width: 100%;
              +  font: bold 1em sans-serif;
              +  color: #FFF;
              +  padding: 0.5em;
              +}
              +
              +#log {
              +  padding: 2.5em 0.5em 0.5em;
              +  font: 1em sans-serif;
              +}
              +
              +.online {
              +  background: green;
              +}
              +
              +.offline {
              +  background: red;
              +}
              +
              + +

              対応する HTML です。 XXX When mochitests for this are created, point to those instead and update this example -nickolay

              + +
              <div id="status"></div>
              +<div id="log"></div>
              +<p>This is a test</p>
              +
              + +

              実行例はこちらです。

              + +

              {{ EmbedLiveSample('Example', '100%', '150') }}

              + +

              + +

              この API がブラウザに実装されていない場合は、サービスワーカーや XMLHttpRequest からのレスポンスを使用するなど、他の兆候を使用してオフラインであるかどうかを検出することができます。

              + +

              参考文献

              + + diff --git a/files/ja/web/api/navigator/online_and_offline_events/index.html b/files/ja/web/api/navigator/online_and_offline_events/index.html deleted file mode 100644 index 15fc35b7c8..0000000000 --- a/files/ja/web/api/navigator/online_and_offline_events/index.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: オンライン・オフラインイベント -slug: Web/API/Navigator/Online_and_offline_events -tags: - - AJAX - - DOM - - HTML5 - - Intermediate - - NeedsUpdate - - Offline web applications - - Web Development -translation_of: Web/API/Navigator/Online_and_offline_events -original_slug: Web/API/NavigatorOnLine/Online_and_offline_events ---- -

              一部のブラウザーは、 Online/Offline イベントWHATWG Web Applications 1.0 仕様書に従って実装しています。

              - -

              概要

              - -

              オフラインに対応した良いウェブアプリケーションを構築するためには、アプリケーションが実際にオフラインになったタイミングを知る必要があります。また、アプリケーションが「オンライン」の状態に復帰したタイミングも知る必要があります。要件を分解すると次のようになります。

              - -
                -
              1. サーバーとの再同期ができるように、ユーザーがオンラインに戻ったタイミングを知る必要があります。
              2. -
              3. サーバーへのリクエストを後回しにすることができるように、ユーザーがオフラインなったタイミングを知る必要があります。
              4. -
              - -

              オンライン/オフラインイベントがこのプロセスを一般化するのに役立ちます。

              - -

              残念ながら、これらのイベントは完全には信頼できません。より高い信頼性が必要な場合や、 API がブラウザーに実装されていない場合は、サービスワーカーを使用したり XMLHttpRequest からのレスポンスを使用するなど、他の兆候を利用してオフラインであるかどうかを検出することができます。

              - -

              API

              - - - -

              navigator.onLine は、 true/false の値を保持しているプロパティです (オンラインの場合は true、オフラインの場合は false)。

              - -

              このプロパティは、ユーザーが「オフラインモード」に切り替えたとき (Firefox の場合は、ファイル→オフライン作業) に更新されます。さらに、このプロパティは、ブラウザーがネットワークに接続できなくなったときに更新されます。仕様書によれば、次のようになっています。

              - -
              - navigator.onLine 属性はユーザーがリンクを辿ったり、スクリプトが外部のページをリクエストしたりしたときにユーザーエージェントがネットワークで通信できない場合 (またはそのような試みが失敗した場合) は、必ず false を返す必要があります。
              - -

              Firefox 2 はこのプロパティをブラウザーのオフラインモードが切り替わる度に更新します。 Firefox 41 は、 Windows、 Linux、 OS X においてネットワークの接続状態が変化したときにも更新します。

              - -

              このプロパティは Firefox と Internet Explorer の古いバージョンにも存在しました。 (この仕様はこれらの先行的な実装に基づいています)。従って、今すぐこのプロパティを使い始めることができます。ネットワーク状態の自動判断は Firefox 2 にて実装されました。

              - -

              "online" および "offline" イベント

              - -

              Firefox 3 は 2 つの新しいイベントを導入しました。"online" and "offline" です。これらの 2 つのイベントは、ブラウザーのオンラインおよびオフラインモードが切り替わるたびに、各ページの <body> に発行されます。加えて、このイベントは document.body から document へとバブリングし、 window までたどり着きます。これらのイベントはキャンセルできません (ユーザーのオンラインモードやオフラインモードへの移行を防ぐことはできません)。

              - -

              Firefox 41 では、 Windows, Linux, OS X においてネットワークの接続状態が変化したことを OS が通知したときに、これらのイベントが発行されます。

              - -

              これらのイベントに対するリスナーは、いくつかのお馴染みの方法で登録することができます。

              -
                -
              • addEventListener を、 window, document, document.body に対して使用します。
              • -
              • document または document.body.ononline または .onoffline プロパティを JavaScript の Function オブジェクトに設定します。(注意: window.ononline または window.onoffline は互換性の理由で動作しません)
              • -
              • HTML マークアップで <body> タグの ononline="..." または onoffline="..." 属性を指定します。
              • -
              - -

              - -

              イベントが機能しているかどうかを確認するために、簡単なテストケースを用意しました (イベントリスナーを document.body に代入しているため、 Chrome では動作しません)。

              - -

              こちらが JavaScript 部分です。

              - -
              window.addEventListener('load', function() {
              -  var status = document.getElementById("status");
              -  var log = document.getElementById("log");
              -
              -  function updateOnlineStatus(event) {
              -    var condition = navigator.onLine ? "online" : "offline";
              -
              -    status.className = condition;
              -    status.innerHTML = condition.toUpperCase();
              -
              -    log.insertAdjacentHTML("beforeend", "Event: " + event.type + "; Status: " + condition);
              -  }
              -
              -  window.addEventListener('online',  updateOnlineStatus);
              -  window.addEventListener('offline', updateOnlineStatus);
              -});
              - -

              CSS 部分です。

              - -
              #status {
              -  position: fixed;
              -  width: 100%;
              -  font: bold 1em sans-serif;
              -  color: #FFF;
              -  padding: 0.5em;
              -}
              -
              -#log {
              -  padding: 2.5em 0.5em 0.5em;
              -  font: 1em sans-serif;
              -}
              -
              -.online {
              -  background: green;
              -}
              -
              -.offline {
              -  background: red;
              -}
              -
              - -

              対応する HTML です。 XXX When mochitests for this are created, point to those instead and update this example -nickolay

              - -
              <div id="status"></div>
              -<div id="log"></div>
              -<p>This is a test</p>
              -
              - -

              実行例はこちらです。

              - -

              {{ EmbedLiveSample('Example', '100%', '150') }}

              - -

              - -

              この API がブラウザに実装されていない場合は、サービスワーカーや XMLHttpRequest からのレスポンスを使用するなど、他の兆候を使用してオフラインであるかどうかを検出することができます。

              - -

              参考文献

              - - diff --git a/files/ko/_redirects.txt b/files/ko/_redirects.txt index 0dcfb7500c..dec0d5b016 100644 --- a/files/ko/_redirects.txt +++ b/files/ko/_redirects.txt @@ -409,7 +409,7 @@ /ko/docs/Navigation_timing /ko/docs/Web/API/Navigation_timing_API /ko/docs/Node_server_without_framework /ko/docs/Learn/Server-side/Node_server_without_framework /ko/docs/Notable_bugs_fixed_in_Firefox_3 /ko/docs/Mozilla/Firefox/Releases/3/Notable_bugs_fixed -/ko/docs/Online_and_offline_events /ko/docs/Web/API/Navigator/Online_and_offline_events +/ko/docs/Online_and_offline_events /ko/docs/Web/API/Navigator/onLine /ko/docs/Plugins/Guide/Scripting_plugins /ko/docs/Glossary/Plugin /ko/docs/SVG /ko/docs/Web/SVG /ko/docs/SVG/Tutorial /ko/docs/Web/SVG/Tutorial @@ -466,11 +466,12 @@ /ko/docs/Web/API/Navigator.battery /ko/docs/Web/API/Navigator/battery /ko/docs/Web/API/Navigator.battery/window.navigator.battery /ko/docs/Web/API/Navigator/battery /ko/docs/Web/API/Navigator.connection/window.navigator.connection /ko/docs/Web/API/Navigator/connection +/ko/docs/Web/API/Navigator/Online_and_offline_events /ko/docs/Web/API/Navigator/onLine /ko/docs/Web/API/NavigatorID /ko/docs/Web/API/Navigator /ko/docs/Web/API/NavigatorLanguage /ko/docs/Web/API/Navigator /ko/docs/Web/API/NavigatorLanguage/language /ko/docs/Web/API/Navigator/language /ko/docs/Web/API/NavigatorOnLine /ko/docs/Web/API/Navigator/language -/ko/docs/Web/API/NavigatorOnLine/Online_and_offline_events /ko/docs/Web/API/Navigator/Online_and_offline_events +/ko/docs/Web/API/NavigatorOnLine/Online_and_offline_events /ko/docs/Web/API/Navigator/onLine /ko/docs/Web/API/NetworkInformation.connection /ko/docs/Web/API/Navigator/connection /ko/docs/Web/API/NetworkInformation.connection/window.navigator.connection /ko/docs/Web/API/Navigator/connection /ko/docs/Web/API/NetworkInformation/connection /ko/docs/Web/API/Navigator/connection diff --git a/files/ko/web/api/navigator/online/index.html b/files/ko/web/api/navigator/online/index.html new file mode 100644 index 0000000000..b28eb025c1 --- /dev/null +++ b/files/ko/web/api/navigator/online/index.html @@ -0,0 +1,108 @@ +--- +title: Online and offline events +slug: Web/API/Navigator/onLine +tags: + - AJAX + - DOM + - Web Development +translation_of: Web/API/Navigator/Online_and_offline_events +original_slug: Web/API/Navigator/Online_and_offline_events +--- +

              In progress Firefox 3WHATWG 웹 애플리케이션 1.0 명세에 기술된 온라인/오프라인 이벤트를 구현합니다.

              + +

              개요

              + +

              좋은 오프라인 가능(offline-capable) 웹 애플리케이션을 작성하려면 여러분의 애플리케이션이 실제로 오프라인이 되는 때를 알아야 합니다. 덧붙여, 여러분의 애플리케이션이 '온라인' 상태로 돌아오는 때도 알아야 합니다. 사실, 이 요구사항은 다음과 같이 정리할 수 있습니다.

              + +
                +
              1. 여러분이 서버와 재동기화할 수 있도록 사용자가 온라인으로 돌아오는 때를 알아야 합니다.
              2. +
              3. 여러분의 서버 요청을 나중에 처리하기 위해 대기시킬 수 있도록 사용자가 오프라인이 되는 때를 알아야 합니다.
              4. +
              + +

              온라인/오프라인 이벤트는 이 과정을 단순하게 만드는 것을 도와줍니다.

              + +

              여러분의 웹 애플리케이션은 특정 문서가 오프라인 자원 캐시에 보관되는 것을 확실하게 할 필요도 있습니다. 이를 위해서는 다음과 같이 HEAD 섹션에 LINK 요소를 포함합니다.

              + +
              <link rel="offline-resource" href="myresource">
              +
              + +

              이는 Firefox 3 및 이후 버전에서 HTML을 처리할 때, 참조하는 자원을 오프라인에서 사용할 수 있도록 특별한 오프라인 자원 캐시에 저장하도록 합니다.

              + +

              API

              + + + +

              navigator.onLinetrue/false(온라인은 true, 오프라인은 false)를 보관하는 속성입니다. 이 속성은 사용자가 해당 메뉴 항목(파일 -> 오프라인 작업)을 선택하여 "오프라인 모드"로 전환할 때마다 갱신됩니다.

              + +

              또한 이 속성은 브라우저가 네트워크에 더 이상 연결할 수 없을 때마다 갱신됩니다. 명세에 따르면:

              + +
              사용자가 링크를 따라가거나 스크립트가 원격 페이지를 요청할 때 사용자 에이전트가 네트워크에 접속할 수 없으면 (혹은 그러한 시도가 실패할 것이라는 것을 안다면) navigator.onLine 속성은 false를 반환해야 합니다...
              + +

              Firefox 2는 윈도우와 리눅스에서 브라우저의 온라인/오프라인 모드가 바뀔 때와 네트워크가 끊어지거나 다시 접속될 때 이 속성을 갱신합니다.

              + +

              이 속성은 Firefox와 Internet Explorer의 이전 버전에도 있으므로 (명세는 이러한 기존 구현을 바탕으로 합니다) 이를 즉시 사용할 수 있습니다. 네트워크 상태의 자동 감지는 Firefox 2에서 구현되었습니다.

              + +

              "online"과 "offline" 이벤트

              + +

              Firefox 3는 두 가지 새로운 이벤트를 도입하고 있습니다: 바로 "online"과 "offline"입니다. 이 두 가지 이벤트는 브라우저가 온라인과 오프라인 모드를 전환할 때 각 페이지의 <body>에서 발생합니다. 덧붙여, 이 이벤트는 document.body에서 document로 전달되고 window에서 끝납니다. 두 가지 이벤트 모두 취소 불가능한(non-cancellable) 이벤트입니다(여러분은 사용자가 온라인이 되거나 오프라인이 되는 것을 막을 수 없습니다).

              + +

              널리 알려진 몇 가지 방법으로 해당 이벤트에 대한 리스너(listener)를 등록할 수 있습니다.

              + +
                +
              • window, document, document.body에서 addEventListener를 이용
              • +
              • 자바스크립트의 Function 개체에서 documentdocument.body.ononline 혹은 .onoffline 속성을 설정 (참고: 호환성 때문에window.ononline이나 window.onoffline은 올바로 동작하지 않습니다.)
              • +
              • HTML 마크업의 <body> 태그에 ononline="..." 혹은 onoffline="..." 속성을 지정
              • +
              + +

              예제

              + +

              이벤트가 동작하는지 확인할 수 있는 간단한 테스트 케이스가 있습니다. XXX When mochitests for this are created, point to those instead and update this example -nickolay

              + +
               <!doctype html>
              + <html>
              + <head>
              +   <script>
              +     function updateOnlineStatus(msg) {
              +       var status = document.getElementById("status");
              +       var condition = navigator.onLine ? "ONLINE" : "OFFLINE";
              +       status.setAttribute("class", condition);
              +       var state = document.getElementById("state");
              +       state.innerHTML = condition;
              +       var log = document.getElementById("log");
              +       log.appendChild(document.createTextNode("Event: " + msg + "; status=" + condition + "\n"));
              +     }
              +     function loaded() {
              +       updateOnlineStatus("load");
              +       document.body.addEventListener("offline", function () {
              +         updateOnlineStatus("offline")
              +       }, false);
              +       document.body.addEventListener("online", function () {
              +         updateOnlineStatus("online")
              +       }, false);
              +     }
              +   </script>
              +   <style>...</style>
              + </head>
              + <body onload="loaded()">
              +   <div id="status"><p id="state"></p></div>
              +   <div id="log"></div>
              + </body>
              + </html>
              +
              + +

              참고

              + + + +

               

              + +

               

              + +
               
              + +

              {{ languages( { "en": "en/Online_and_offline_events", "es": "es/Eventos_online_y_offline", "fr": "fr/\u00c9v\u00e8nements_online_et_offline", "ja": "ja/Online_and_offline_events", "pl": "pl/Zdarzenia_online_i_offline", "pt": "pt/Eventos_online_e_offline" } ) }}

              diff --git a/files/ko/web/api/navigator/online_and_offline_events/index.html b/files/ko/web/api/navigator/online_and_offline_events/index.html deleted file mode 100644 index 039240fedc..0000000000 --- a/files/ko/web/api/navigator/online_and_offline_events/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Online and offline events -slug: Web/API/Navigator/Online_and_offline_events -tags: - - AJAX - - DOM - - Web Development -translation_of: Web/API/Navigator/Online_and_offline_events ---- -

              In progress Firefox 3WHATWG 웹 애플리케이션 1.0 명세에 기술된 온라인/오프라인 이벤트를 구현합니다.

              - -

              개요

              - -

              좋은 오프라인 가능(offline-capable) 웹 애플리케이션을 작성하려면 여러분의 애플리케이션이 실제로 오프라인이 되는 때를 알아야 합니다. 덧붙여, 여러분의 애플리케이션이 '온라인' 상태로 돌아오는 때도 알아야 합니다. 사실, 이 요구사항은 다음과 같이 정리할 수 있습니다.

              - -
                -
              1. 여러분이 서버와 재동기화할 수 있도록 사용자가 온라인으로 돌아오는 때를 알아야 합니다.
              2. -
              3. 여러분의 서버 요청을 나중에 처리하기 위해 대기시킬 수 있도록 사용자가 오프라인이 되는 때를 알아야 합니다.
              4. -
              - -

              온라인/오프라인 이벤트는 이 과정을 단순하게 만드는 것을 도와줍니다.

              - -

              여러분의 웹 애플리케이션은 특정 문서가 오프라인 자원 캐시에 보관되는 것을 확실하게 할 필요도 있습니다. 이를 위해서는 다음과 같이 HEAD 섹션에 LINK 요소를 포함합니다.

              - -
              <link rel="offline-resource" href="myresource">
              -
              - -

              이는 Firefox 3 및 이후 버전에서 HTML을 처리할 때, 참조하는 자원을 오프라인에서 사용할 수 있도록 특별한 오프라인 자원 캐시에 저장하도록 합니다.

              - -

              API

              - - - -

              navigator.onLinetrue/false(온라인은 true, 오프라인은 false)를 보관하는 속성입니다. 이 속성은 사용자가 해당 메뉴 항목(파일 -> 오프라인 작업)을 선택하여 "오프라인 모드"로 전환할 때마다 갱신됩니다.

              - -

              또한 이 속성은 브라우저가 네트워크에 더 이상 연결할 수 없을 때마다 갱신됩니다. 명세에 따르면:

              - -
              사용자가 링크를 따라가거나 스크립트가 원격 페이지를 요청할 때 사용자 에이전트가 네트워크에 접속할 수 없으면 (혹은 그러한 시도가 실패할 것이라는 것을 안다면) navigator.onLine 속성은 false를 반환해야 합니다...
              - -

              Firefox 2는 윈도우와 리눅스에서 브라우저의 온라인/오프라인 모드가 바뀔 때와 네트워크가 끊어지거나 다시 접속될 때 이 속성을 갱신합니다.

              - -

              이 속성은 Firefox와 Internet Explorer의 이전 버전에도 있으므로 (명세는 이러한 기존 구현을 바탕으로 합니다) 이를 즉시 사용할 수 있습니다. 네트워크 상태의 자동 감지는 Firefox 2에서 구현되었습니다.

              - -

              "online"과 "offline" 이벤트

              - -

              Firefox 3는 두 가지 새로운 이벤트를 도입하고 있습니다: 바로 "online"과 "offline"입니다. 이 두 가지 이벤트는 브라우저가 온라인과 오프라인 모드를 전환할 때 각 페이지의 <body>에서 발생합니다. 덧붙여, 이 이벤트는 document.body에서 document로 전달되고 window에서 끝납니다. 두 가지 이벤트 모두 취소 불가능한(non-cancellable) 이벤트입니다(여러분은 사용자가 온라인이 되거나 오프라인이 되는 것을 막을 수 없습니다).

              - -

              널리 알려진 몇 가지 방법으로 해당 이벤트에 대한 리스너(listener)를 등록할 수 있습니다.

              - -
                -
              • window, document, document.body에서 addEventListener를 이용
              • -
              • 자바스크립트의 Function 개체에서 documentdocument.body.ononline 혹은 .onoffline 속성을 설정 (참고: 호환성 때문에window.ononline이나 window.onoffline은 올바로 동작하지 않습니다.)
              • -
              • HTML 마크업의 <body> 태그에 ononline="..." 혹은 onoffline="..." 속성을 지정
              • -
              - -

              예제

              - -

              이벤트가 동작하는지 확인할 수 있는 간단한 테스트 케이스가 있습니다. XXX When mochitests for this are created, point to those instead and update this example -nickolay

              - -
               <!doctype html>
              - <html>
              - <head>
              -   <script>
              -     function updateOnlineStatus(msg) {
              -       var status = document.getElementById("status");
              -       var condition = navigator.onLine ? "ONLINE" : "OFFLINE";
              -       status.setAttribute("class", condition);
              -       var state = document.getElementById("state");
              -       state.innerHTML = condition;
              -       var log = document.getElementById("log");
              -       log.appendChild(document.createTextNode("Event: " + msg + "; status=" + condition + "\n"));
              -     }
              -     function loaded() {
              -       updateOnlineStatus("load");
              -       document.body.addEventListener("offline", function () {
              -         updateOnlineStatus("offline")
              -       }, false);
              -       document.body.addEventListener("online", function () {
              -         updateOnlineStatus("online")
              -       }, false);
              -     }
              -   </script>
              -   <style>...</style>
              - </head>
              - <body onload="loaded()">
              -   <div id="status"><p id="state"></p></div>
              -   <div id="log"></div>
              - </body>
              - </html>
              -
              - -

              참고

              - - - -

               

              - -

               

              - -
               
              - -

              {{ languages( { "en": "en/Online_and_offline_events", "es": "es/Eventos_online_y_offline", "fr": "fr/\u00c9v\u00e8nements_online_et_offline", "ja": "ja/Online_and_offline_events", "pl": "pl/Zdarzenia_online_i_offline", "pt": "pt/Eventos_online_e_offline" } ) }}

              -- cgit v1.2.3-54-g00ecf From 5fbfeee5908241590dacb0f0aac3859f61360947 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 27 Feb 2022 13:04:02 +0900 Subject: Node インターフェイスのメソッドの記事を移行 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/appendchild/index.html | 97 ----------- files/ja/web/api/node/appendchild/index.md | 97 +++++++++++ files/ja/web/api/node/clonenode/index.html | 62 ------- files/ja/web/api/node/clonenode/index.md | 62 +++++++ .../api/node/comparedocumentposition/index.html | 118 ------------- .../web/api/node/comparedocumentposition/index.md | 118 +++++++++++++ files/ja/web/api/node/contains/index.html | 56 ------- files/ja/web/api/node/contains/index.md | 56 +++++++ files/ja/web/api/node/haschildnodes/index.html | 31 ---- files/ja/web/api/node/haschildnodes/index.md | 31 ++++ files/ja/web/api/node/insertbefore/index.html | 186 --------------------- files/ja/web/api/node/insertbefore/index.md | 186 +++++++++++++++++++++ .../ja/web/api/node/isdefaultnamespace/index.html | 35 ---- files/ja/web/api/node/isdefaultnamespace/index.md | 35 ++++ files/ja/web/api/node/isequalnode/index.html | 90 ---------- files/ja/web/api/node/isequalnode/index.md | 90 ++++++++++ files/ja/web/api/node/issamenode/index.html | 39 ----- files/ja/web/api/node/issamenode/index.md | 39 +++++ files/ja/web/api/node/issupported/index.html | 44 ----- files/ja/web/api/node/issupported/index.md | 44 +++++ files/ja/web/api/node/normalize/index.html | 48 ------ files/ja/web/api/node/normalize/index.md | 48 ++++++ files/ja/web/api/node/removechild/index.html | 124 -------------- files/ja/web/api/node/removechild/index.md | 124 ++++++++++++++ files/ja/web/api/node/replacechild/index.html | 75 --------- files/ja/web/api/node/replacechild/index.md | 75 +++++++++ 26 files changed, 1005 insertions(+), 1005 deletions(-) delete mode 100644 files/ja/web/api/node/appendchild/index.html create mode 100644 files/ja/web/api/node/appendchild/index.md delete mode 100644 files/ja/web/api/node/clonenode/index.html create mode 100644 files/ja/web/api/node/clonenode/index.md delete mode 100644 files/ja/web/api/node/comparedocumentposition/index.html create mode 100644 files/ja/web/api/node/comparedocumentposition/index.md delete mode 100644 files/ja/web/api/node/contains/index.html create mode 100644 files/ja/web/api/node/contains/index.md delete mode 100644 files/ja/web/api/node/haschildnodes/index.html create mode 100644 files/ja/web/api/node/haschildnodes/index.md delete mode 100644 files/ja/web/api/node/insertbefore/index.html create mode 100644 files/ja/web/api/node/insertbefore/index.md delete mode 100644 files/ja/web/api/node/isdefaultnamespace/index.html create mode 100644 files/ja/web/api/node/isdefaultnamespace/index.md delete mode 100644 files/ja/web/api/node/isequalnode/index.html create mode 100644 files/ja/web/api/node/isequalnode/index.md delete mode 100644 files/ja/web/api/node/issamenode/index.html create mode 100644 files/ja/web/api/node/issamenode/index.md delete mode 100644 files/ja/web/api/node/issupported/index.html create mode 100644 files/ja/web/api/node/issupported/index.md delete mode 100644 files/ja/web/api/node/normalize/index.html create mode 100644 files/ja/web/api/node/normalize/index.md delete mode 100644 files/ja/web/api/node/removechild/index.html create mode 100644 files/ja/web/api/node/removechild/index.md delete mode 100644 files/ja/web/api/node/replacechild/index.html create mode 100644 files/ja/web/api/node/replacechild/index.md (limited to 'files/ja') diff --git a/files/ja/web/api/node/appendchild/index.html b/files/ja/web/api/node/appendchild/index.html deleted file mode 100644 index 3242491906..0000000000 --- a/files/ja/web/api/node/appendchild/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Node.appendChild -slug: Web/API/Node/appendChild -tags: - - API - - DOM - - Method - - Node - - Reference -translation_of: Web/API/Node/appendChild ---- -
              {{APIRef("DOM")}}
              - -

              Node.appendChild() メソッドは、特定の親ノードの子ノードリストの末尾にノードを追加します。追加しようとしたノードが既に存在していたら、それは現在の親ノードから除かれ、新しい親ノードに追加されます(他のノードに追加する前にそのノードを親ノードから削除する必要はありません)。

              - -

              これは、ノードが同時にドキュメントの 2 箇所に存在できないということを意味します。ノードがすでに親を持っている場合、最初にノードが削除された後、新しい位置の末尾に追加されます。{{domxref("Node.cloneNode()")}} は、新しい親の末尾に追加する前に、ノードのコピーを作成するために使用できます。cloneNode で作成したコピーは自動的に同期を保たないことに注意してください。

              - -

              このメソッドでは、異なるドキュメント間でノードを移動することはできません。異なるドキュメントからノードを末尾に追加したい場合は、{{domxref("document.importNode()")}} メソッドを使用する必要があります。

              - -

              構文

              - -
              var aChild = element.appendChild(aChild);
              - -

              引数

              - -

              aChild

              - -

              親ノードに追加する子ノード(要素)

              - -

              戻り値

              - -

              追加した子ノードです。ただし、{{domxref("DocumentFragment")}}を引数にした場合は、空の{{domxref("DocumentFragment")}}が戻ります。

              - -

              注意

              - -

              appendChild() が子要素を返すため、メソッドチェーンが期待通りに動きません。:

              - -
              var aBlock = doc.createElement('block').appendChild(doc.createElement('b'));
              - -

              aBlock に <b></b> を与えただけでは期待通りに動きません。

              - -

              - -
              // 新しい段落要素を作成し、ドキュメントの body の最後に追加します。
              -var p = document.createElement("p");
              -document.body.appendChild(p);
              -
              - -

              仕様

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              仕様ステータスコメント
              {{SpecName('DOM WHATWG', '#dom-node-appendchild', 'Node.appendChild()')}}{{Spec2('DOM WHATWG')}}{{SpecName("DOM3 Core")}} から変更なし。
              {{SpecName('DOM3 Core', 'core.html#ID-184E7107', 'Node.appendChild()')}}{{Spec2('DOM3 Core')}}{{SpecName("DOM2 Core")}} から変更なし。
              {{SpecName('DOM2 Core', 'core.html#ID-184E7107', 'Node.appendChild()')}}{{Spec2('DOM2 Core')}}{{SpecName("DOM1")}} から変更なし。
              {{SpecName('DOM1', 'level-one-core.html#ID-184E7107', 'Node.appendChild()')}}{{Spec2('DOM1')}}初期定義。
              - -

              ブラウザー実装状況

              - -

              {{Compat("api.Node.appendChild")}}

              - -
              - -

              関連情報

              - -
                -
              • {{domxref("Node.removeChild()")}}
              • -
              • {{domxref("Node.replaceChild()")}}
              • -
              • {{domxref("Node.insertBefore()")}}
              • -
              • {{domxref("Node.hasChildNodes()")}}
              • -
              • {{domxref("ParentNode.append()")}}
              • -
              diff --git a/files/ja/web/api/node/appendchild/index.md b/files/ja/web/api/node/appendchild/index.md new file mode 100644 index 0000000000..3242491906 --- /dev/null +++ b/files/ja/web/api/node/appendchild/index.md @@ -0,0 +1,97 @@ +--- +title: Node.appendChild +slug: Web/API/Node/appendChild +tags: + - API + - DOM + - Method + - Node + - Reference +translation_of: Web/API/Node/appendChild +--- +
              {{APIRef("DOM")}}
              + +

              Node.appendChild() メソッドは、特定の親ノードの子ノードリストの末尾にノードを追加します。追加しようとしたノードが既に存在していたら、それは現在の親ノードから除かれ、新しい親ノードに追加されます(他のノードに追加する前にそのノードを親ノードから削除する必要はありません)。

              + +

              これは、ノードが同時にドキュメントの 2 箇所に存在できないということを意味します。ノードがすでに親を持っている場合、最初にノードが削除された後、新しい位置の末尾に追加されます。{{domxref("Node.cloneNode()")}} は、新しい親の末尾に追加する前に、ノードのコピーを作成するために使用できます。cloneNode で作成したコピーは自動的に同期を保たないことに注意してください。

              + +

              このメソッドでは、異なるドキュメント間でノードを移動することはできません。異なるドキュメントからノードを末尾に追加したい場合は、{{domxref("document.importNode()")}} メソッドを使用する必要があります。

              + +

              構文

              + +
              var aChild = element.appendChild(aChild);
              + +

              引数

              + +

              aChild

              + +

              親ノードに追加する子ノード(要素)

              + +

              戻り値

              + +

              追加した子ノードです。ただし、{{domxref("DocumentFragment")}}を引数にした場合は、空の{{domxref("DocumentFragment")}}が戻ります。

              + +

              注意

              + +

              appendChild() が子要素を返すため、メソッドチェーンが期待通りに動きません。:

              + +
              var aBlock = doc.createElement('block').appendChild(doc.createElement('b'));
              + +

              aBlock に <b></b> を与えただけでは期待通りに動きません。

              + +

              + +
              // 新しい段落要素を作成し、ドキュメントの body の最後に追加します。
              +var p = document.createElement("p");
              +document.body.appendChild(p);
              +
              + +

              仕様

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              仕様ステータスコメント
              {{SpecName('DOM WHATWG', '#dom-node-appendchild', 'Node.appendChild()')}}{{Spec2('DOM WHATWG')}}{{SpecName("DOM3 Core")}} から変更なし。
              {{SpecName('DOM3 Core', 'core.html#ID-184E7107', 'Node.appendChild()')}}{{Spec2('DOM3 Core')}}{{SpecName("DOM2 Core")}} から変更なし。
              {{SpecName('DOM2 Core', 'core.html#ID-184E7107', 'Node.appendChild()')}}{{Spec2('DOM2 Core')}}{{SpecName("DOM1")}} から変更なし。
              {{SpecName('DOM1', 'level-one-core.html#ID-184E7107', 'Node.appendChild()')}}{{Spec2('DOM1')}}初期定義。
              + +

              ブラウザー実装状況

              + +

              {{Compat("api.Node.appendChild")}}

              + +
              + +

              関連情報

              + +
                +
              • {{domxref("Node.removeChild()")}}
              • +
              • {{domxref("Node.replaceChild()")}}
              • +
              • {{domxref("Node.insertBefore()")}}
              • +
              • {{domxref("Node.hasChildNodes()")}}
              • +
              • {{domxref("ParentNode.append()")}}
              • +
              diff --git a/files/ja/web/api/node/clonenode/index.html b/files/ja/web/api/node/clonenode/index.html deleted file mode 100644 index db00fc7a61..0000000000 --- a/files/ja/web/api/node/clonenode/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Node.cloneNode() -slug: Web/API/Node/cloneNode -translation_of: Web/API/Node/cloneNode ---- -
              {{ApiRef}}
              - -

              概要

              - -

              現在のノードの複製を返します。

              - -

              構文

              - -
              var dupNode = node.cloneNode(deep);
              -
              - -
              -
              node
              -
              複製するノード
              -
              dupNode
              -
              新しく生成される node の複製
              -
              deep {{optional_inline}}
              -
              node の子孫ノードも複製する場合は truenode のみを複製する場合は false -
              -

              注記: DOM4 の仕様では (Gecko 13.0 {{geckoRelease("13.0")}} で実装) 、 deep は省略可能な引数です。省略された場合、 deep には true が渡され、深い複製を生成します。浅い複製を生成するには、 deepfalse にする必要があります。

              - -

              以前のDOMの仕様を実装しているブラウザでは、 deep は必須の引数です。

              -
              -
              -
              - -

              - -
              var p = document.getElementById("para1");
              -var p_prime = p.cloneNode(true);
              -
              - -

              注記

              - -

              ノードを複製すると、そのノードのすべての属性とその値がコピーされます。つまり、HTML属性のイベントを含みます。addEventListener() を使用したものや、要素のプロパティに代入されたもの (例: node.onclick = fn;) は複製されません。

              - -

              cloneNode によって返される複製ノードは、 {{domxref("Node.appendChild()")}} や同種のメソッドによってドキュメントの一部である他のノードに追加されるまでは、ドキュメントの一部ではありません。また、他のノードに追加されるまでは、親ノードを持ちません。

              - -

              deepfalse に設定されていると、どの子ノードも複製されません。 そのため、そのノードに含まれる {{domxref("Text")}} ノードも複製されません。

              - -

              deeptrue に評価できる場合、サブツリー全体 (子 {{domxref("Text")}} ノードにあるテキストを含む) もコピーされます。 {{HTMLElement("img")}} や {{HTMLElement("input")}} 要素などの空ノードの場合には deep を true と false のどちらに設定してもかまいません。

              - -
              注意: cloneNode() を使用すると、ドキュメント内で要素の id が重複する可能性があります。
              - -

              別のドキュメントに追加するためにノードを複製する場合は、代わりに {{domxref("Document.importNode()")}} を使用してください。

              - -

              ブラウザ実装状況

              - -

              {{Compat("api.Node.cloneNode")}}

              - -

              仕様書

              - -
                -
              • {{Spec("http://w3.org/TR/DOM-Level-2-Core/core.html#ID-3A0ED0A4","DOM Level 2 Core: cloneNode","REC")}}
              • -
              • {{Spec("http://w3.org/TR/DOM-Level-3-Core/core.html#ID-3A0ED0A4","DOM Level 3 Core: cloneNode","REC")}}
              • -
              • DOM4: cloneNode (草案)
              • -
              diff --git a/files/ja/web/api/node/clonenode/index.md b/files/ja/web/api/node/clonenode/index.md new file mode 100644 index 0000000000..db00fc7a61 --- /dev/null +++ b/files/ja/web/api/node/clonenode/index.md @@ -0,0 +1,62 @@ +--- +title: Node.cloneNode() +slug: Web/API/Node/cloneNode +translation_of: Web/API/Node/cloneNode +--- +
              {{ApiRef}}
              + +

              概要

              + +

              現在のノードの複製を返します。

              + +

              構文

              + +
              var dupNode = node.cloneNode(deep);
              +
              + +
              +
              node
              +
              複製するノード
              +
              dupNode
              +
              新しく生成される node の複製
              +
              deep {{optional_inline}}
              +
              node の子孫ノードも複製する場合は truenode のみを複製する場合は false +
              +

              注記: DOM4 の仕様では (Gecko 13.0 {{geckoRelease("13.0")}} で実装) 、 deep は省略可能な引数です。省略された場合、 deep には true が渡され、深い複製を生成します。浅い複製を生成するには、 deepfalse にする必要があります。

              + +

              以前のDOMの仕様を実装しているブラウザでは、 deep は必須の引数です。

              +
              +
              +
              + +

              + +
              var p = document.getElementById("para1");
              +var p_prime = p.cloneNode(true);
              +
              + +

              注記

              + +

              ノードを複製すると、そのノードのすべての属性とその値がコピーされます。つまり、HTML属性のイベントを含みます。addEventListener() を使用したものや、要素のプロパティに代入されたもの (例: node.onclick = fn;) は複製されません。

              + +

              cloneNode によって返される複製ノードは、 {{domxref("Node.appendChild()")}} や同種のメソッドによってドキュメントの一部である他のノードに追加されるまでは、ドキュメントの一部ではありません。また、他のノードに追加されるまでは、親ノードを持ちません。

              + +

              deepfalse に設定されていると、どの子ノードも複製されません。 そのため、そのノードに含まれる {{domxref("Text")}} ノードも複製されません。

              + +

              deeptrue に評価できる場合、サブツリー全体 (子 {{domxref("Text")}} ノードにあるテキストを含む) もコピーされます。 {{HTMLElement("img")}} や {{HTMLElement("input")}} 要素などの空ノードの場合には deep を true と false のどちらに設定してもかまいません。

              + +
              注意: cloneNode() を使用すると、ドキュメント内で要素の id が重複する可能性があります。
              + +

              別のドキュメントに追加するためにノードを複製する場合は、代わりに {{domxref("Document.importNode()")}} を使用してください。

              + +

              ブラウザ実装状況

              + +

              {{Compat("api.Node.cloneNode")}}

              + +

              仕様書

              + +
                +
              • {{Spec("http://w3.org/TR/DOM-Level-2-Core/core.html#ID-3A0ED0A4","DOM Level 2 Core: cloneNode","REC")}}
              • +
              • {{Spec("http://w3.org/TR/DOM-Level-3-Core/core.html#ID-3A0ED0A4","DOM Level 3 Core: cloneNode","REC")}}
              • +
              • DOM4: cloneNode (草案)
              • +
              diff --git a/files/ja/web/api/node/comparedocumentposition/index.html b/files/ja/web/api/node/comparedocumentposition/index.html deleted file mode 100644 index 5865081c84..0000000000 --- a/files/ja/web/api/node/comparedocumentposition/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Node.compareDocumentPosition -slug: Web/API/Node/compareDocumentPosition -tags: - - DOM - - DOM Element Methods - - Gecko - - Gecko DOM Reference -translation_of: Web/API/Node/compareDocumentPosition ---- -
              {{ApiRef}}
              - -

              概要

              - -

              そのノードと別のノードの位置を比較し、結果となるビットマスクを返します。

              - -

              構文

              - -
              node.compareDocumentPosition( otherNode )
              -
              - -

              パラメーター

              - -
              -
              node
              -
              比較元ノード
              -
              otherNode
              -
              node と比較する別ノード
              -
              - -

              返り値

              - -

              呼び出し元の node と {{domxref("Document")}} 内の otherNode の関係を表すビットの整数値。複数の条件に適応する場合、1つ以上のビットがセットされることがあります。compareDocumentPosition() を呼び出した node と比較して、otherNode が 文書のより前にあり、かつ node を含んでいるならば、DOCUMENT_POSITION_CONTAINS と DOCUMENT_POSITION_PRECEDING のビットがセットされ、結果は0x0Aもしくは10進数の10になります。

              - -

              注記

              - -

              戻り値は以下の値を持つビットマスクの何れかとなります。

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              名称
              DOCUMENT_POSITION_DISCONNECTED1
              DOCUMENT_POSITION_PRECEDING2
              DOCUMENT_POSITION_FOLLOWING4
              DOCUMENT_POSITION_CONTAINS8
              DOCUMENT_POSITION_CONTAINED_BY16
              DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC32
              - -

              - -
              var head = document.getElementsByTagName('head').item(0);
              -
              -if ( head.compareDocumentPosition(document.body) & Node.DOCUMENT_POSITION_FOLLOWING ) {
              -  console.log("head 要素は body 要素より前に記述されています。");
              -} else {
              -  console.log("head 要素は body 要素の前に配置しなくてはなりません。");
              -}
              -
              - -
              -

              注記: compareDocumentPosition の戻り値はビットマスクです。よって、有意な結果を得るには ビット演算子の "&" を用いなくてはならない点に注意して下さい。

              -
              - -

              仕様

              - - - - - - - - - - - - - - - - - - - - - -
              仕様書策定状況コメント
              DOM Level 3Recommendation
              DOM StandardLiving standard
              - -

              関連情報

              - - diff --git a/files/ja/web/api/node/comparedocumentposition/index.md b/files/ja/web/api/node/comparedocumentposition/index.md new file mode 100644 index 0000000000..5865081c84 --- /dev/null +++ b/files/ja/web/api/node/comparedocumentposition/index.md @@ -0,0 +1,118 @@ +--- +title: Node.compareDocumentPosition +slug: Web/API/Node/compareDocumentPosition +tags: + - DOM + - DOM Element Methods + - Gecko + - Gecko DOM Reference +translation_of: Web/API/Node/compareDocumentPosition +--- +
              {{ApiRef}}
              + +

              概要

              + +

              そのノードと別のノードの位置を比較し、結果となるビットマスクを返します。

              + +

              構文

              + +
              node.compareDocumentPosition( otherNode )
              +
              + +

              パラメーター

              + +
              +
              node
              +
              比較元ノード
              +
              otherNode
              +
              node と比較する別ノード
              +
              + +

              返り値

              + +

              呼び出し元の node と {{domxref("Document")}} 内の otherNode の関係を表すビットの整数値。複数の条件に適応する場合、1つ以上のビットがセットされることがあります。compareDocumentPosition() を呼び出した node と比較して、otherNode が 文書のより前にあり、かつ node を含んでいるならば、DOCUMENT_POSITION_CONTAINS と DOCUMENT_POSITION_PRECEDING のビットがセットされ、結果は0x0Aもしくは10進数の10になります。

              + +

              注記

              + +

              戻り値は以下の値を持つビットマスクの何れかとなります。

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              名称
              DOCUMENT_POSITION_DISCONNECTED1
              DOCUMENT_POSITION_PRECEDING2
              DOCUMENT_POSITION_FOLLOWING4
              DOCUMENT_POSITION_CONTAINS8
              DOCUMENT_POSITION_CONTAINED_BY16
              DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC32
              + +

              + +
              var head = document.getElementsByTagName('head').item(0);
              +
              +if ( head.compareDocumentPosition(document.body) & Node.DOCUMENT_POSITION_FOLLOWING ) {
              +  console.log("head 要素は body 要素より前に記述されています。");
              +} else {
              +  console.log("head 要素は body 要素の前に配置しなくてはなりません。");
              +}
              +
              + +
              +

              注記: compareDocumentPosition の戻り値はビットマスクです。よって、有意な結果を得るには ビット演算子の "&" を用いなくてはならない点に注意して下さい。

              +
              + +

              仕様

              + + + + + + + + + + + + + + + + + + + + + +
              仕様書策定状況コメント
              DOM Level 3Recommendation
              DOM StandardLiving standard
              + +

              関連情報

              + + diff --git a/files/ja/web/api/node/contains/index.html b/files/ja/web/api/node/contains/index.html deleted file mode 100644 index 2947ce92d1..0000000000 --- a/files/ja/web/api/node/contains/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Node.contains -slug: Web/API/Node/contains -tags: - - API - - DOM - - Method - - Node -translation_of: Web/API/Node/contains ---- -
              {{APIRef("DOM")}}
              - -

              Node.contains メソッドは指定ノードの子孫ノードに特定の子ノード(※自身も含む)が含まれるかどうかを示す真偽値を返します。

              - -

              構文

              - -
              node.contains( otherNode )
              -
              - -

              - -

              この関数は、ある要素がそのページの body 要素に含まれるかどうかをチェックするものです。contains は包括的かつ決定的であるため、body がそれ自身を含むかどうかは isInPage の意図ではないため明示的に false を返します。

              - -
              function isInPage(node) {
              -  return (node === document.body) ? false : document.body.contains(node);
              -}
              - -

              仕様

              - - - - - - - - - - - - - - - - -
              仕様ステータスコメント
              {{SpecName("DOM WHATWG", "#dom-node-contains", "Node.contains()")}}{{Spec2("DOM WHATWG")}}Initial definition
              - -

              ブラウザ実装状況

              - -

              {{Compat("api.Node.contains")}}

              - -

              関連情報

              - -
                -
              • {{domxref("Node.compareDocumentPosition")}}
              • -
              • {{domxref("Node.hasChildNodes")}}
              • -
              diff --git a/files/ja/web/api/node/contains/index.md b/files/ja/web/api/node/contains/index.md new file mode 100644 index 0000000000..2947ce92d1 --- /dev/null +++ b/files/ja/web/api/node/contains/index.md @@ -0,0 +1,56 @@ +--- +title: Node.contains +slug: Web/API/Node/contains +tags: + - API + - DOM + - Method + - Node +translation_of: Web/API/Node/contains +--- +
              {{APIRef("DOM")}}
              + +

              Node.contains メソッドは指定ノードの子孫ノードに特定の子ノード(※自身も含む)が含まれるかどうかを示す真偽値を返します。

              + +

              構文

              + +
              node.contains( otherNode )
              +
              + +

              + +

              この関数は、ある要素がそのページの body 要素に含まれるかどうかをチェックするものです。contains は包括的かつ決定的であるため、body がそれ自身を含むかどうかは isInPage の意図ではないため明示的に false を返します。

              + +
              function isInPage(node) {
              +  return (node === document.body) ? false : document.body.contains(node);
              +}
              + +

              仕様

              + + + + + + + + + + + + + + + + +
              仕様ステータスコメント
              {{SpecName("DOM WHATWG", "#dom-node-contains", "Node.contains()")}}{{Spec2("DOM WHATWG")}}Initial definition
              + +

              ブラウザ実装状況

              + +

              {{Compat("api.Node.contains")}}

              + +

              関連情報

              + +
                +
              • {{domxref("Node.compareDocumentPosition")}}
              • +
              • {{domxref("Node.hasChildNodes")}}
              • +
              diff --git a/files/ja/web/api/node/haschildnodes/index.html b/files/ja/web/api/node/haschildnodes/index.html deleted file mode 100644 index b4ed1654d3..0000000000 --- a/files/ja/web/api/node/haschildnodes/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Node.hasChildNodes -slug: Web/API/Node/hasChildNodes -tags: - - DOM - - Gecko - - Gecko DOM Reference -translation_of: Web/API/Node/hasChildNodes ---- -
              - {{ApiRef}}
              -

              概要

              -

              hasChildNodes は指定したノード子ノードを持つか否かを示す真偽値を返します。

              -

              構文

              -
              node.hasChildNodes()
              -

              -

              "foo" を id に持つ要素の子ノードの存在を確認し、存在する場合は最初の子ノードを削除する例を以下に示します。

              -
              var foo = document.getElementById("foo");
              -
              -if ( foo.hasChildNodes() ) {
              -  foo.removeChild( foo.childNodes[0] );
              -}
              -

              仕様書

              - -

              関連情報

              -
                -
              • {{domxref("Node.childNodes")}}
              • -
              • {{domxref("Node.hasAttributes")}}
              • -
              diff --git a/files/ja/web/api/node/haschildnodes/index.md b/files/ja/web/api/node/haschildnodes/index.md new file mode 100644 index 0000000000..b4ed1654d3 --- /dev/null +++ b/files/ja/web/api/node/haschildnodes/index.md @@ -0,0 +1,31 @@ +--- +title: Node.hasChildNodes +slug: Web/API/Node/hasChildNodes +tags: + - DOM + - Gecko + - Gecko DOM Reference +translation_of: Web/API/Node/hasChildNodes +--- +
              + {{ApiRef}}
              +

              概要

              +

              hasChildNodes は指定したノード子ノードを持つか否かを示す真偽値を返します。

              +

              構文

              +
              node.hasChildNodes()
              +

              +

              "foo" を id に持つ要素の子ノードの存在を確認し、存在する場合は最初の子ノードを削除する例を以下に示します。

              +
              var foo = document.getElementById("foo");
              +
              +if ( foo.hasChildNodes() ) {
              +  foo.removeChild( foo.childNodes[0] );
              +}
              +

              仕様書

              + +

              関連情報

              +
                +
              • {{domxref("Node.childNodes")}}
              • +
              • {{domxref("Node.hasAttributes")}}
              • +
              diff --git a/files/ja/web/api/node/insertbefore/index.html b/files/ja/web/api/node/insertbefore/index.html deleted file mode 100644 index 2bfea72cdf..0000000000 --- a/files/ja/web/api/node/insertbefore/index.html +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: Node.insertBefore() -slug: Web/API/Node/insertBefore -tags: - - API - - DOM - - Element - - Method - - Node - - Reference - - メソッド -translation_of: Web/API/Node/insertBefore ---- -
              {{APIRef("DOM")}}
              - -

              Node.insertBefore() メソッドは、ノードを参照ノードの前に、指定された親ノードの子として挿入します。

              - -

              指定されたノードが既に文書中に存在した場合、 insertBefore() はこれを現在の位置から新しい位置に移動します。 (つまり、既存の親ノードから自動的に削除され、指定された新しい親に追加されます。)

              - -

              これは、1つのノードが文書中に同時に2か所に存在できないことを意味します。

              - -
              -

              メモ: {{domxref("Node.cloneNode()")}} を使用して、ノードを新しい親の下に追加する前に複製を作成することができます。なお、 cloneNode() で作成された複製は自動的には同期されません。

              -
              - -

              指定された子が {{domxref("DocumentFragment")}} である場合、 DocumentFragment の内容全体が指定された親ノードの子リストに移動されます。

              - -

              構文

              - -
              let insertedNode = parentNode.insertBefore(newNode, referenceNode)
              -
              - -
              -
              insertedNode
              -
              挿入されたノード (newNode と同じ) です。
              -
              parentNode
              -
              新しく挿入されるノードの親です。
              -
              newNode
              -
              挿入されるノードです。
              -
              referenceNode
              -
              newNode がこのノードの直前に挿入されます。このノードが null である場合は、 newNodeparentNode の子ノードの末尾に挿入されます。
              -
              - -
              -

              メモ: referenceNode は省略可能な引数ではありません。明示的に {{domxref("Node")}} または null を渡す必要があります。渡し忘れた場合や無効な値を渡した場合は、ブラウザーのバージョンによって異なる動作をすることがあります。

              -
              - -

              返値

              - -

              追加された子ノードを返します (ただし newNode が {{domxref("DocumentFragment")}} の場合は、空の {{domxref("DocumentFragment")}} が返ります)。

              - -

              - -

              例 1

              - -
              <div id="parentElement">
              -   <span id="childElement">foo bar</span>
              -</div>
              -
              -<script>
              -// 挿入する新しいノードを作成する
              -let newNode = document.createElement("span")
              -
              -// 親ノードの参照を取得する
              -let parentDiv = document.getElementById("childElement").parentNode
              -
              -// テストケース [ 1 ] 開始: 既存の childElement (すべて正しく動作)
              -let sp2 = document.getElementById("childElement")
              -parentDiv.insertBefore(newNode, sp2)
              -// テストケース [ 1 ] 終了
              -
              -// テストケース [ 2 ] 開始: childElement が undefined 型の場合
              -let sp2 = undefined // "childElement" の ID を持つノードが存在しない
              -parentDiv.insertBefore(newNode, sp2) // Node 型に暗黙に動的型変換
              -// テストケース [ 2 ] 終了
              -
              -// テストケース [ 3 ] 開始: childElement が "undefined" (文字列) の場合
              -let sp2 = "undefined" // "childElement" の ID を持つノードが存在しない
              -parentDiv.insertBefore(newNode, sp2) // Generates "Type Error: Invalid Argument"
              -// テストケース [ 3 ] 終了
              -</script>
              -
              - -

              例 2

              - -
              <div id="parentElement">
              -  <span id="childElement">foo bar</span>
              -</div>
              -
              -<script>
              -// 新しい只の <span> 要素を作成
              -let sp1 = document.createElement("span")
              -
              -// 参照要素を取得
              -let sp2 = document.getElementById("childElement")
              -// 親要素を取得
              -let parentDiv = sp2.parentNode
              -
              -// 新しい要素を sp2 の手前に挿入
              -parentDiv.insertBefore(sp1, sp2)
              -</script>
              -
              - -
              -

              メモ: insertAfter() メソッドはありません。これは insertBefore メソッドと {{domxref("Node.nextSibling")}} の組み合わせでエミュレートできます。

              -
              - -

              前の例では、 sp1 は以下のようにして sp2 の後に挿入することができます。

              - -
              parentDiv.insertBefore(sp1, sp2.nextSibling)
              - -

              sp2 に次の兄弟がない場合、これは最後の子ノードです。 — sp2.nextSiblingnull を返し、 sp1 は子ノードリストの末尾 (sp2 の直後) に挿入されます。

              - -

              例 3

              - -

              要素を最初の子要素の前に挿入するために、 {{domxref("Node/firstChild", "firstChild")}} プロパティを使用します。

              - -
              // 親ノードを取得
              -let parentElement = document.getElementById('parentElement')
              -// 親の最初の子を取得
              -let theFirstChild = parentElement.firstChild
              -
              -// 新しい要素を取得
              -let newElement = document.createElement("div")
              -
              -// 最初の子の前に新しい要素を挿入
              -parentElement.insertBefore(newElement, theFirstChild)
              -
              - -

              要素に最初の子がない場合、 firstChildnull になります。その場合も、要素は親の最後の子の後に追加されます。

              - -

              親要素が最初の子を持っていない場合は、最後の子も持っていません。結果的に、新しく挿入された要素は唯一の要素になります。

              - -

              仕様書

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('DOM WHATWG','#dom-node-insertbefore','Node.insertBefore')}}{{Spec2('DOM WHATWG')}}挿入アルゴリズムのエラーを修正
              {{SpecName('DOM4','#dom-node-insertbefore','Node.insertBefore')}}{{Spec2('DOM4')}}より詳細にアルゴリズムを記述
              {{SpecName('DOM3 Core','core.html#ID-952280727','Node.insertBefore')}}{{Spec2('DOM3 Core')}}目立った変更はなし
              {{SpecName('DOM2 Core','core.html#ID-952280727','Node.insertBefore')}}{{Spec2('DOM2 Core')}}目立った変更はなし
              {{SpecName('DOM1','level-one-core.html#method-insertBefore','Node.insertBefore')}}{{Spec2('DOM1')}}導入
              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Node.insertBefore")}}

              - -

              関連情報

              - -
                -
              • {{domxref("Node.removeChild()")}}
              • -
              • {{domxref("Node.replaceChild()")}}
              • -
              • {{domxref("Node.appendChild()")}}
              • -
              • {{domxref("Node.hasChildNodes()")}}
              • -
              • {{domxref("Element.insertAdjacentElement()")}}
              • -
              • {{domxref("ParentNode.prepend()")}}
              • -
              diff --git a/files/ja/web/api/node/insertbefore/index.md b/files/ja/web/api/node/insertbefore/index.md new file mode 100644 index 0000000000..2bfea72cdf --- /dev/null +++ b/files/ja/web/api/node/insertbefore/index.md @@ -0,0 +1,186 @@ +--- +title: Node.insertBefore() +slug: Web/API/Node/insertBefore +tags: + - API + - DOM + - Element + - Method + - Node + - Reference + - メソッド +translation_of: Web/API/Node/insertBefore +--- +
              {{APIRef("DOM")}}
              + +

              Node.insertBefore() メソッドは、ノードを参照ノードの前に、指定された親ノードの子として挿入します。

              + +

              指定されたノードが既に文書中に存在した場合、 insertBefore() はこれを現在の位置から新しい位置に移動します。 (つまり、既存の親ノードから自動的に削除され、指定された新しい親に追加されます。)

              + +

              これは、1つのノードが文書中に同時に2か所に存在できないことを意味します。

              + +
              +

              メモ: {{domxref("Node.cloneNode()")}} を使用して、ノードを新しい親の下に追加する前に複製を作成することができます。なお、 cloneNode() で作成された複製は自動的には同期されません。

              +
              + +

              指定された子が {{domxref("DocumentFragment")}} である場合、 DocumentFragment の内容全体が指定された親ノードの子リストに移動されます。

              + +

              構文

              + +
              let insertedNode = parentNode.insertBefore(newNode, referenceNode)
              +
              + +
              +
              insertedNode
              +
              挿入されたノード (newNode と同じ) です。
              +
              parentNode
              +
              新しく挿入されるノードの親です。
              +
              newNode
              +
              挿入されるノードです。
              +
              referenceNode
              +
              newNode がこのノードの直前に挿入されます。このノードが null である場合は、 newNodeparentNode の子ノードの末尾に挿入されます。
              +
              + +
              +

              メモ: referenceNode は省略可能な引数ではありません。明示的に {{domxref("Node")}} または null を渡す必要があります。渡し忘れた場合や無効な値を渡した場合は、ブラウザーのバージョンによって異なる動作をすることがあります。

              +
              + +

              返値

              + +

              追加された子ノードを返します (ただし newNode が {{domxref("DocumentFragment")}} の場合は、空の {{domxref("DocumentFragment")}} が返ります)。

              + +

              + +

              例 1

              + +
              <div id="parentElement">
              +   <span id="childElement">foo bar</span>
              +</div>
              +
              +<script>
              +// 挿入する新しいノードを作成する
              +let newNode = document.createElement("span")
              +
              +// 親ノードの参照を取得する
              +let parentDiv = document.getElementById("childElement").parentNode
              +
              +// テストケース [ 1 ] 開始: 既存の childElement (すべて正しく動作)
              +let sp2 = document.getElementById("childElement")
              +parentDiv.insertBefore(newNode, sp2)
              +// テストケース [ 1 ] 終了
              +
              +// テストケース [ 2 ] 開始: childElement が undefined 型の場合
              +let sp2 = undefined // "childElement" の ID を持つノードが存在しない
              +parentDiv.insertBefore(newNode, sp2) // Node 型に暗黙に動的型変換
              +// テストケース [ 2 ] 終了
              +
              +// テストケース [ 3 ] 開始: childElement が "undefined" (文字列) の場合
              +let sp2 = "undefined" // "childElement" の ID を持つノードが存在しない
              +parentDiv.insertBefore(newNode, sp2) // Generates "Type Error: Invalid Argument"
              +// テストケース [ 3 ] 終了
              +</script>
              +
              + +

              例 2

              + +
              <div id="parentElement">
              +  <span id="childElement">foo bar</span>
              +</div>
              +
              +<script>
              +// 新しい只の <span> 要素を作成
              +let sp1 = document.createElement("span")
              +
              +// 参照要素を取得
              +let sp2 = document.getElementById("childElement")
              +// 親要素を取得
              +let parentDiv = sp2.parentNode
              +
              +// 新しい要素を sp2 の手前に挿入
              +parentDiv.insertBefore(sp1, sp2)
              +</script>
              +
              + +
              +

              メモ: insertAfter() メソッドはありません。これは insertBefore メソッドと {{domxref("Node.nextSibling")}} の組み合わせでエミュレートできます。

              +
              + +

              前の例では、 sp1 は以下のようにして sp2 の後に挿入することができます。

              + +
              parentDiv.insertBefore(sp1, sp2.nextSibling)
              + +

              sp2 に次の兄弟がない場合、これは最後の子ノードです。 — sp2.nextSiblingnull を返し、 sp1 は子ノードリストの末尾 (sp2 の直後) に挿入されます。

              + +

              例 3

              + +

              要素を最初の子要素の前に挿入するために、 {{domxref("Node/firstChild", "firstChild")}} プロパティを使用します。

              + +
              // 親ノードを取得
              +let parentElement = document.getElementById('parentElement')
              +// 親の最初の子を取得
              +let theFirstChild = parentElement.firstChild
              +
              +// 新しい要素を取得
              +let newElement = document.createElement("div")
              +
              +// 最初の子の前に新しい要素を挿入
              +parentElement.insertBefore(newElement, theFirstChild)
              +
              + +

              要素に最初の子がない場合、 firstChildnull になります。その場合も、要素は親の最後の子の後に追加されます。

              + +

              親要素が最初の子を持っていない場合は、最後の子も持っていません。結果的に、新しく挿入された要素は唯一の要素になります。

              + +

              仕様書

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName('DOM WHATWG','#dom-node-insertbefore','Node.insertBefore')}}{{Spec2('DOM WHATWG')}}挿入アルゴリズムのエラーを修正
              {{SpecName('DOM4','#dom-node-insertbefore','Node.insertBefore')}}{{Spec2('DOM4')}}より詳細にアルゴリズムを記述
              {{SpecName('DOM3 Core','core.html#ID-952280727','Node.insertBefore')}}{{Spec2('DOM3 Core')}}目立った変更はなし
              {{SpecName('DOM2 Core','core.html#ID-952280727','Node.insertBefore')}}{{Spec2('DOM2 Core')}}目立った変更はなし
              {{SpecName('DOM1','level-one-core.html#method-insertBefore','Node.insertBefore')}}{{Spec2('DOM1')}}導入
              + +

              ブラウザーの互換性

              + +

              {{Compat("api.Node.insertBefore")}}

              + +

              関連情報

              + +
                +
              • {{domxref("Node.removeChild()")}}
              • +
              • {{domxref("Node.replaceChild()")}}
              • +
              • {{domxref("Node.appendChild()")}}
              • +
              • {{domxref("Node.hasChildNodes()")}}
              • +
              • {{domxref("Element.insertAdjacentElement()")}}
              • +
              • {{domxref("ParentNode.prepend()")}}
              • +
              diff --git a/files/ja/web/api/node/isdefaultnamespace/index.html b/files/ja/web/api/node/isdefaultnamespace/index.html deleted file mode 100644 index 018e6562cc..0000000000 --- a/files/ja/web/api/node/isdefaultnamespace/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Node.isDefaultNamespace -slug: Web/API/Node/isDefaultNamespace -tags: - - DOM - - Gecko DOM Reference - - Namespaces - - Node -translation_of: Web/API/Node/isDefaultNamespace ---- -
              - {{ApiRef}}
              -

              概要

              -

              isDefaultNamespace は、引数としてネームスペース URI を受け取り、ネームスペースが指定されたノードのデフォルトのネームスペースである場合に true を返します。そうでない場合は false を返します。

              -

              構文

              -
              result = node.isDefaultNamespace(namespaceURI)
              -
              -
                -
              • result : 戻り値は真偽値 (true / false) となる
              • -
              • namespaceURI : 要素に対してチェックする、名前空間を表す文字列
              • -
              -

              -
              var XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
              -var el = document.getElementsByTagNameNS(XULNS, 'textbox')[0];
              -
              -alert(el.isDefaultNamespace(XULNS)); // true
              -

              仕様書

              - -

              関連情報

              - diff --git a/files/ja/web/api/node/isdefaultnamespace/index.md b/files/ja/web/api/node/isdefaultnamespace/index.md new file mode 100644 index 0000000000..018e6562cc --- /dev/null +++ b/files/ja/web/api/node/isdefaultnamespace/index.md @@ -0,0 +1,35 @@ +--- +title: Node.isDefaultNamespace +slug: Web/API/Node/isDefaultNamespace +tags: + - DOM + - Gecko DOM Reference + - Namespaces + - Node +translation_of: Web/API/Node/isDefaultNamespace +--- +
              + {{ApiRef}}
              +

              概要

              +

              isDefaultNamespace は、引数としてネームスペース URI を受け取り、ネームスペースが指定されたノードのデフォルトのネームスペースである場合に true を返します。そうでない場合は false を返します。

              +

              構文

              +
              result = node.isDefaultNamespace(namespaceURI)
              +
              +
                +
              • result : 戻り値は真偽値 (true / false) となる
              • +
              • namespaceURI : 要素に対してチェックする、名前空間を表す文字列
              • +
              +

              +
              var XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
              +var el = document.getElementsByTagNameNS(XULNS, 'textbox')[0];
              +
              +alert(el.isDefaultNamespace(XULNS)); // true
              +

              仕様書

              + +

              関連情報

              + diff --git a/files/ja/web/api/node/isequalnode/index.html b/files/ja/web/api/node/isequalnode/index.html deleted file mode 100644 index 3eced87fe0..0000000000 --- a/files/ja/web/api/node/isequalnode/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Node.isEqualNode -slug: Web/API/Node/isEqualNode -translation_of: Web/API/Node/isEqualNode ---- -
              {{ApiRef}}
              - -

              概要

              - -

              Node.isEqualNode()は2つのノードが同値かどうかをテストします。それぞれのノードが同じ型で、同じ特性(要素であればIDや子要素の数など)、属性値などを持つ場合、同値と判定されます。比較される内容はノードの型によって異なります。

              - -

              構文

              - -
              var isEqualNode = node.isEqualNode(otherNode);
              -
              - -
                -
              • otherNode : 同値性を比較する対象の {{domxref("Node")}}
              • -
              - -

              - -

              3つの {{HTMLElement("div")}} ブロックを作成する例を示します。1つめと3つめは同じ内容と属性を持ち、2番目は異なっています。このとき、isEqualNode() を使ってJavaScriptでノードを比較した結果は以下のようになります。

              - -

              HTML

              - -
              <div>最初の要素です。</div>
              -<div>2番目の要素です。</div>
              -<div>最初の要素です。</div>
              -
              -<p id="output"></p>
              - - - -

              JavaScript

              - -
              let output = document.getElementById("output");
              -let divList  = document.getElementsByTagName("div");
              -
              -output.innerHTML += "div 0 と div 0 は同じか: " + divList[0].isEqualNode(divList[0]) + "<br/>";
              -output.innerHTML += "div 0 と div 1 は同じか: " + divList[0].isEqualNode(divList[1]) + "<br/>";
              -output.innerHTML += "div 0 と div 2 は同じか: " + divList[0].isEqualNode(divList[2]) + "<br/>";
              - -

              Results

              - -

              {{ EmbedLiveSample('Example', 480) }}

              - -

              -

              仕様

              - - - - - - - - - - - - - - - - - -
              仕様ステータスコメント
              {{SpecName('DOM WHATWG', '#dom-node-isequalnode', 'Node.isEqualNode')}}{{Spec2('DOM WHATWG')}}
              - -

              ブラウザー互換性

              - - - -

              {{Compat("api.Node.isEqualNode")}}

              - -

              参考

              - -
                -
              • {{domxref("Node.isSameNode()")}}
              • -
              diff --git a/files/ja/web/api/node/isequalnode/index.md b/files/ja/web/api/node/isequalnode/index.md new file mode 100644 index 0000000000..3eced87fe0 --- /dev/null +++ b/files/ja/web/api/node/isequalnode/index.md @@ -0,0 +1,90 @@ +--- +title: Node.isEqualNode +slug: Web/API/Node/isEqualNode +translation_of: Web/API/Node/isEqualNode +--- +
              {{ApiRef}}
              + +

              概要

              + +

              Node.isEqualNode()は2つのノードが同値かどうかをテストします。それぞれのノードが同じ型で、同じ特性(要素であればIDや子要素の数など)、属性値などを持つ場合、同値と判定されます。比較される内容はノードの型によって異なります。

              + +

              構文

              + +
              var isEqualNode = node.isEqualNode(otherNode);
              +
              + +
                +
              • otherNode : 同値性を比較する対象の {{domxref("Node")}}
              • +
              + +

              + +

              3つの {{HTMLElement("div")}} ブロックを作成する例を示します。1つめと3つめは同じ内容と属性を持ち、2番目は異なっています。このとき、isEqualNode() を使ってJavaScriptでノードを比較した結果は以下のようになります。

              + +

              HTML

              + +
              <div>最初の要素です。</div>
              +<div>2番目の要素です。</div>
              +<div>最初の要素です。</div>
              +
              +<p id="output"></p>
              + + + +

              JavaScript

              + +
              let output = document.getElementById("output");
              +let divList  = document.getElementsByTagName("div");
              +
              +output.innerHTML += "div 0 と div 0 は同じか: " + divList[0].isEqualNode(divList[0]) + "<br/>";
              +output.innerHTML += "div 0 と div 1 は同じか: " + divList[0].isEqualNode(divList[1]) + "<br/>";
              +output.innerHTML += "div 0 と div 2 は同じか: " + divList[0].isEqualNode(divList[2]) + "<br/>";
              + +

              Results

              + +

              {{ EmbedLiveSample('Example', 480) }}

              + +

              +

              仕様

              + + + + + + + + + + + + + + + + + +
              仕様ステータスコメント
              {{SpecName('DOM WHATWG', '#dom-node-isequalnode', 'Node.isEqualNode')}}{{Spec2('DOM WHATWG')}}
              + +

              ブラウザー互換性

              + + + +

              {{Compat("api.Node.isEqualNode")}}

              + +

              参考

              + +
                +
              • {{domxref("Node.isSameNode()")}}
              • +
              diff --git a/files/ja/web/api/node/issamenode/index.html b/files/ja/web/api/node/issamenode/index.html deleted file mode 100644 index f94668cfd5..0000000000 --- a/files/ja/web/api/node/issamenode/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Node.isSameNode -slug: Web/API/Node/isSameNode -tags: - - DOM - - Gecko DOM Reference - - Node -translation_of: Web/API/Node/isSameNode ---- -
              - {{ApiRef}}{{Obsolete_header}}
              -

              概要

              -

              ふたつのノードが同一ノードの場合は true を、異なる場合は false を返します。

              -
              - 注記: このメソッドは DOM level 4 で削除されており、Gecko 10.0 {{geckoRelease("10.0")}} やその他のブラウザの最近のバージョンには実装されていません。よって、別の方法を採る必要があります。
              -
              // 当メソッド
              -node1.isSameNode(node2)
              -
              -// 代替策
              -node1 === node2
              -node1 == node2
              -
              -
              -
              -

              構文

              -
              isSameNode = node.isSameNode(org);
              -
              -
                -
              • arg : 比較ノード
              • -
              -

              仕様書

              -
                -
              • {{spec("http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isSameNode","DOM Level 3 Core: isSameNode","REC")}}
              • -
              • {{spec("http://www.w3.org/TR/domcore/","DOM Core Level 4","WD")}} で削除されています
              • -
              -

              関連情報

              -
                -
              • {{domxref("Node.isEqualNode")}}
              • -
              diff --git a/files/ja/web/api/node/issamenode/index.md b/files/ja/web/api/node/issamenode/index.md new file mode 100644 index 0000000000..f94668cfd5 --- /dev/null +++ b/files/ja/web/api/node/issamenode/index.md @@ -0,0 +1,39 @@ +--- +title: Node.isSameNode +slug: Web/API/Node/isSameNode +tags: + - DOM + - Gecko DOM Reference + - Node +translation_of: Web/API/Node/isSameNode +--- +
              + {{ApiRef}}{{Obsolete_header}}
              +

              概要

              +

              ふたつのノードが同一ノードの場合は true を、異なる場合は false を返します。

              +
              + 注記: このメソッドは DOM level 4 で削除されており、Gecko 10.0 {{geckoRelease("10.0")}} やその他のブラウザの最近のバージョンには実装されていません。よって、別の方法を採る必要があります。
              +
              // 当メソッド
              +node1.isSameNode(node2)
              +
              +// 代替策
              +node1 === node2
              +node1 == node2
              +
              +
              +
              +

              構文

              +
              isSameNode = node.isSameNode(org);
              +
              +
                +
              • arg : 比較ノード
              • +
              +

              仕様書

              +
                +
              • {{spec("http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isSameNode","DOM Level 3 Core: isSameNode","REC")}}
              • +
              • {{spec("http://www.w3.org/TR/domcore/","DOM Core Level 4","WD")}} で削除されています
              • +
              +

              関連情報

              +
                +
              • {{domxref("Node.isEqualNode")}}
              • +
              diff --git a/files/ja/web/api/node/issupported/index.html b/files/ja/web/api/node/issupported/index.html deleted file mode 100644 index 3b25dc254b..0000000000 --- a/files/ja/web/api/node/issupported/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Node.isSupported -slug: Web/API/Node/isSupported -tags: - - DOM - - DOM Element Methods - - Gecko - - Gecko DOM Reference -translation_of: Web/API/Node/isSupported ---- -
              - {{ApiRef}}{{obsolete_header("22")}}
              -

              概要

              -

              指定された機能が DOM 実装に含まれており、このノードでサポートされているかどうかをテストします。

              -

              構文

              -
              element.isSupported(feature, version)
              -
              -
              - feature
              -
              - テストする機能の名前。DOMImplementationhasFeature メソッドに渡される名前と同じです。コア DOM 仕様に定義された使用可能な値は、DOM Level 2 の Conformance セクション にリストがあります。
              -
              - version
              -
              - テストする機能のバージョン番号。DOM Level 2, version 1 では、この文字列は 2.0 になります。バージョンが指定されていなかったり、対象の機能がどのバージョンでもサポートされている場合は true を返します。
              -
              -

              -
              <div id="doc">
              -</div>
              -
              -<script>
              - // 要素を取得し、その要素が DOM2 HTML モジュールをサポートしているかどうかを確認します
              - var main = document.getElementById('doc');
              - var output = main.isSupported('HTML', '2.0');
              -</script>
              -
              -

              仕様

              - -

              Gecko に関する注記

              -
                -
              • Gecko 19.0 {{geckoRelease("19.0")}} 以降では、このメソッドは常に true を返します。また、このメソッドは Gecko 22.0 {{geckoRelease("22.0")}} で削除されています。
              • -
              diff --git a/files/ja/web/api/node/issupported/index.md b/files/ja/web/api/node/issupported/index.md new file mode 100644 index 0000000000..3b25dc254b --- /dev/null +++ b/files/ja/web/api/node/issupported/index.md @@ -0,0 +1,44 @@ +--- +title: Node.isSupported +slug: Web/API/Node/isSupported +tags: + - DOM + - DOM Element Methods + - Gecko + - Gecko DOM Reference +translation_of: Web/API/Node/isSupported +--- +
              + {{ApiRef}}{{obsolete_header("22")}}
              +

              概要

              +

              指定された機能が DOM 実装に含まれており、このノードでサポートされているかどうかをテストします。

              +

              構文

              +
              element.isSupported(feature, version)
              +
              +
              + feature
              +
              + テストする機能の名前。DOMImplementationhasFeature メソッドに渡される名前と同じです。コア DOM 仕様に定義された使用可能な値は、DOM Level 2 の Conformance セクション にリストがあります。
              +
              + version
              +
              + テストする機能のバージョン番号。DOM Level 2, version 1 では、この文字列は 2.0 になります。バージョンが指定されていなかったり、対象の機能がどのバージョンでもサポートされている場合は true を返します。
              +
              +

              +
              <div id="doc">
              +</div>
              +
              +<script>
              + // 要素を取得し、その要素が DOM2 HTML モジュールをサポートしているかどうかを確認します
              + var main = document.getElementById('doc');
              + var output = main.isSupported('HTML', '2.0');
              +</script>
              +
              +

              仕様

              + +

              Gecko に関する注記

              +
                +
              • Gecko 19.0 {{geckoRelease("19.0")}} 以降では、このメソッドは常に true を返します。また、このメソッドは Gecko 22.0 {{geckoRelease("22.0")}} で削除されています。
              • +
              diff --git a/files/ja/web/api/node/normalize/index.html b/files/ja/web/api/node/normalize/index.html deleted file mode 100644 index 83026ac378..0000000000 --- a/files/ja/web/api/node/normalize/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Node.normalize -slug: Web/API/Node/normalize -tags: - - DOM - - Gecko - - Node -translation_of: Web/API/Node/normalize ---- -
              {{ApiRef}}
              - -

              概要

              - -

              指定ノードの空のノードを削除し、隣接するテキストノードをひとつに纏め、文書を「正規化 (normalize)」します。

              - -

              構文

              - -
              element.normalize();
              -
              - -

              - -
              var wrapper = document.createElement("div");
              -
              -wrapper.appendChild( document.createTextNode("Part 1 ") );
              -wrapper.appendChild( document.createTextNode("Part 2 ") );
              -
              -// wrapper.childNodes[0].textContent === "Part 1 "
              -// wrapper.childNodes[1].textContent === "Part 2 "
              -// この時点で、wrapper の 子ノード数は 2 です。 wrapper.childNodes.length === 2
              -
              -wrapper.normalize(); // 正規化
              -
              -// 正規化後の wrapper の子ノード数は 1 となっています。 wrapper.childNodes.length === 1
              -// 挿入処理の為に冗長化したノードはひとつに纏められています。 wrapper.childNodes[0].textContent === "Part 1 Part 2"
              -
              - -

              仕様書

              - - - -

              関連情報

              - - diff --git a/files/ja/web/api/node/normalize/index.md b/files/ja/web/api/node/normalize/index.md new file mode 100644 index 0000000000..83026ac378 --- /dev/null +++ b/files/ja/web/api/node/normalize/index.md @@ -0,0 +1,48 @@ +--- +title: Node.normalize +slug: Web/API/Node/normalize +tags: + - DOM + - Gecko + - Node +translation_of: Web/API/Node/normalize +--- +
              {{ApiRef}}
              + +

              概要

              + +

              指定ノードの空のノードを削除し、隣接するテキストノードをひとつに纏め、文書を「正規化 (normalize)」します。

              + +

              構文

              + +
              element.normalize();
              +
              + +

              + +
              var wrapper = document.createElement("div");
              +
              +wrapper.appendChild( document.createTextNode("Part 1 ") );
              +wrapper.appendChild( document.createTextNode("Part 2 ") );
              +
              +// wrapper.childNodes[0].textContent === "Part 1 "
              +// wrapper.childNodes[1].textContent === "Part 2 "
              +// この時点で、wrapper の 子ノード数は 2 です。 wrapper.childNodes.length === 2
              +
              +wrapper.normalize(); // 正規化
              +
              +// 正規化後の wrapper の子ノード数は 1 となっています。 wrapper.childNodes.length === 1
              +// 挿入処理の為に冗長化したノードはひとつに纏められています。 wrapper.childNodes[0].textContent === "Part 1 Part 2"
              +
              + +

              仕様書

              + + + +

              関連情報

              + + diff --git a/files/ja/web/api/node/removechild/index.html b/files/ja/web/api/node/removechild/index.html deleted file mode 100644 index ff64604414..0000000000 --- a/files/ja/web/api/node/removechild/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Node.removeChild -slug: Web/API/Node/removeChild -tags: - - DOM - - Gecko - - Node -translation_of: Web/API/Node/removeChild ---- -

              Node.removeChild() メソッドは、 DOM から子ノードを取り除きます。取り除いたノードを返します。

              - -

              構文

              - -
              var oldChild = node.removeChild(child);
              -または
              -node.removeChild(child);
              -
              - -
                -
              • child は DOM から取り除く、子ノードです。
              • -
              • nodechild の親ノードです。
              • -
              • oldChild は 取り除かれた子ノードへの参照を保持します。 oldChild === child です。
              • -
              - -

              取り除かれた子ノードはメモリ内に残りますが、 DOM の一部ではなくなります。最初の構文にある通り、取り除いたノードは、 oldChild オブジェクト参照を通じて、後でコード中で再利用することができます。

              - -

              しかし、第二の構文では oldChild の参照が保持されないので、コードが他の場所でノードへの参照を持っていなければ、直ちに使用できなくなり、無関係になり、ふつうはまもなくメモリから 自動的に削除されます。

              - -

              child が実際には element ノードの子ではない場合、このメソッドは例外を発生します。これは child が呼び出し時には実際に element の子であったものの、要素を取り除こうと呼び出されたイベントハンドラーによって削除された場合にも発生します。

              - -

              このメソッドでは、2つの異なる方法で例外が発生します。

              - -
                -
              1. -

                child が実際に element の子であり、 DOM 上に存在していたが削除された場合、このメソッドでは次の例外が発生します。

                - -

                Uncaught NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.

                -
              2. -
              3. -

                child がページの DOM 上に存在しない場合、このメソッドでは次の例外が発生します。
                -
                - Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.

                -
              4. -
              - -

              - -
              <!-- 対象とする HTML のコード -->
              -<div id="top" > </div>
              -
              -<script type="text/javascript">
              -      var top = document.getElementById("top");
              -      var nested = document.getElementById("nested");
              -
              -      var garbage = top.removeChild(nested);    //Test Case 2: the method throws the exception (2)
              -
              -</script>
              -
              -<!--Sample HTML code-->
              -<div id="top">
              - <div id="nested"></div>
              -</div>
              -
              -<script type="text/javascript">
              -      var top = document.getElementById("top");
              -      var nested = document.getElementById("nested");
              -
              -      var garbage = top.removeChild(nested); // This first call remove correctly the node
              -
              -      // ......
              -      garbage = top.removeChild(nested);   // Test Case 1: the method in the second call here, throws the exception (1)
              -
              -</script>
              -
              -
              - -
              <!--Sample HTML code-->
              -
              -<div id="top">
              -  <div id="nested"></div>
              -</div>
              -
              - -
              // 親ノードから指定した子要素を除去
              -var d = document.getElementById("top");
              -var d_nested = document.getElementById("nested");
              -var throwawayNode = d.removeChild(d_nested);
              -
              - -
              // 親要素が不明、不定の場合の方法
              -var node = document.getElementById("nested");
              -if (node.parentNode) {
              -  node.parentNode.removeChild(node);
              -}
              -
              - -
              // 要素の全ての子を除去
              -var element = document.getElementById("top");
              -while (element.firstChild) {
              -  element.removeChild(element.firstChild);
              -}
              -
              - -

              仕様書

              - - - -

              ブラウザーの対応

              - -

              {{Compat("api.Node.removeChild")}}

              - -

              関連情報

              - -
                -
              • {{domxref("Node.replaceChild")}}
              • -
              • {{domxref("Node.parentNode")}}
              • -
              • {{domxref("ChildNode.remove")}}
              • -
              - -
              {{APIRef("DOM")}}
              diff --git a/files/ja/web/api/node/removechild/index.md b/files/ja/web/api/node/removechild/index.md new file mode 100644 index 0000000000..ff64604414 --- /dev/null +++ b/files/ja/web/api/node/removechild/index.md @@ -0,0 +1,124 @@ +--- +title: Node.removeChild +slug: Web/API/Node/removeChild +tags: + - DOM + - Gecko + - Node +translation_of: Web/API/Node/removeChild +--- +

              Node.removeChild() メソッドは、 DOM から子ノードを取り除きます。取り除いたノードを返します。

              + +

              構文

              + +
              var oldChild = node.removeChild(child);
              +または
              +node.removeChild(child);
              +
              + +
                +
              • child は DOM から取り除く、子ノードです。
              • +
              • nodechild の親ノードです。
              • +
              • oldChild は 取り除かれた子ノードへの参照を保持します。 oldChild === child です。
              • +
              + +

              取り除かれた子ノードはメモリ内に残りますが、 DOM の一部ではなくなります。最初の構文にある通り、取り除いたノードは、 oldChild オブジェクト参照を通じて、後でコード中で再利用することができます。

              + +

              しかし、第二の構文では oldChild の参照が保持されないので、コードが他の場所でノードへの参照を持っていなければ、直ちに使用できなくなり、無関係になり、ふつうはまもなくメモリから 自動的に削除されます。

              + +

              child が実際には element ノードの子ではない場合、このメソッドは例外を発生します。これは child が呼び出し時には実際に element の子であったものの、要素を取り除こうと呼び出されたイベントハンドラーによって削除された場合にも発生します。

              + +

              このメソッドでは、2つの異なる方法で例外が発生します。

              + +
                +
              1. +

                child が実際に element の子であり、 DOM 上に存在していたが削除された場合、このメソッドでは次の例外が発生します。

                + +

                Uncaught NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.

                +
              2. +
              3. +

                child がページの DOM 上に存在しない場合、このメソッドでは次の例外が発生します。
                +
                + Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.

                +
              4. +
              + +

              + +
              <!-- 対象とする HTML のコード -->
              +<div id="top" > </div>
              +
              +<script type="text/javascript">
              +      var top = document.getElementById("top");
              +      var nested = document.getElementById("nested");
              +
              +      var garbage = top.removeChild(nested);    //Test Case 2: the method throws the exception (2)
              +
              +</script>
              +
              +<!--Sample HTML code-->
              +<div id="top">
              + <div id="nested"></div>
              +</div>
              +
              +<script type="text/javascript">
              +      var top = document.getElementById("top");
              +      var nested = document.getElementById("nested");
              +
              +      var garbage = top.removeChild(nested); // This first call remove correctly the node
              +
              +      // ......
              +      garbage = top.removeChild(nested);   // Test Case 1: the method in the second call here, throws the exception (1)
              +
              +</script>
              +
              +
              + +
              <!--Sample HTML code-->
              +
              +<div id="top">
              +  <div id="nested"></div>
              +</div>
              +
              + +
              // 親ノードから指定した子要素を除去
              +var d = document.getElementById("top");
              +var d_nested = document.getElementById("nested");
              +var throwawayNode = d.removeChild(d_nested);
              +
              + +
              // 親要素が不明、不定の場合の方法
              +var node = document.getElementById("nested");
              +if (node.parentNode) {
              +  node.parentNode.removeChild(node);
              +}
              +
              + +
              // 要素の全ての子を除去
              +var element = document.getElementById("top");
              +while (element.firstChild) {
              +  element.removeChild(element.firstChild);
              +}
              +
              + +

              仕様書

              + + + +

              ブラウザーの対応

              + +

              {{Compat("api.Node.removeChild")}}

              + +

              関連情報

              + +
                +
              • {{domxref("Node.replaceChild")}}
              • +
              • {{domxref("Node.parentNode")}}
              • +
              • {{domxref("ChildNode.remove")}}
              • +
              + +
              {{APIRef("DOM")}}
              diff --git a/files/ja/web/api/node/replacechild/index.html b/files/ja/web/api/node/replacechild/index.html deleted file mode 100644 index 2c69ea2114..0000000000 --- a/files/ja/web/api/node/replacechild/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Node.replaceChild -slug: Web/API/Node/replaceChild -tags: - - API - - DOM - - Method - - Node - - Reference -translation_of: Web/API/Node/replaceChild ---- -
              {{ApiRef("DOM")}}
              - -

              Node.replaceChild() メソッドは指定ノードの子ノードを別のノードに置き換えます。

              - -

              構文

              - -
              replacedNode = parentNode.replaceChild(newChild, oldChild);
              -
              - -
                -
              • newChild : oldChild を置き換える新しいノード(既存のノードは先に取り除かれます)
              • -
              • oldChild : 置き換えられる既存ノード
              • -
              • replacedNode : 置き換えられたノード(oldChild と同じノード)
              • -
              - -

              - -
              // <div>
              -//  <span id="childSpan">foo bar</span>
              -// </div>
              -
              -// ID も属性も内容も持たない空要素を生成
              -var sp1 = document.createElement("span");
              -
              -// 生成したノードに id 属性 'newSpan' を付与
              -sp1.setAttribute("id", "newSpan");
              -
              -// テキストノードを生成
              -var sp1_content = document.createTextNode("新しい span 要素");
              -
              -// 生成したテキストノードを先の空要素の子ノードとして配置
              -sp1.appendChild(sp1_content);
              -
              -// 置換に先んじ、参照を代入
              -var sp2 = document.getElementById("childSpan"); // 既存の置換対象ノード
              -var parentDiv = sp2.parentNode; // 置換対象ノードの親要素
              -
              -// 既存ノード "sp2" を 生成済の新しい span 要素 "sp1" と置換
              -parentDiv.replaceChild(sp1, sp2);
              -
              -
              -// 上記コード実行後のノードは以下の様になります:
              -// <div>
              -//   <span id="newSpan">新しい span 要素</span>
              -// </div>
              -
              - -

              仕様書

              - - - -

              ブラウザ実装状況

              - -

              {{Compat("api.Node.replaceChild")}}

              - -

              関連情報

              - -
                -
              • {{domxref("Node.removeChild")}}
              • -
              diff --git a/files/ja/web/api/node/replacechild/index.md b/files/ja/web/api/node/replacechild/index.md new file mode 100644 index 0000000000..2c69ea2114 --- /dev/null +++ b/files/ja/web/api/node/replacechild/index.md @@ -0,0 +1,75 @@ +--- +title: Node.replaceChild +slug: Web/API/Node/replaceChild +tags: + - API + - DOM + - Method + - Node + - Reference +translation_of: Web/API/Node/replaceChild +--- +
              {{ApiRef("DOM")}}
              + +

              Node.replaceChild() メソッドは指定ノードの子ノードを別のノードに置き換えます。

              + +

              構文

              + +
              replacedNode = parentNode.replaceChild(newChild, oldChild);
              +
              + +
                +
              • newChild : oldChild を置き換える新しいノード(既存のノードは先に取り除かれます)
              • +
              • oldChild : 置き換えられる既存ノード
              • +
              • replacedNode : 置き換えられたノード(oldChild と同じノード)
              • +
              + +

              + +
              // <div>
              +//  <span id="childSpan">foo bar</span>
              +// </div>
              +
              +// ID も属性も内容も持たない空要素を生成
              +var sp1 = document.createElement("span");
              +
              +// 生成したノードに id 属性 'newSpan' を付与
              +sp1.setAttribute("id", "newSpan");
              +
              +// テキストノードを生成
              +var sp1_content = document.createTextNode("新しい span 要素");
              +
              +// 生成したテキストノードを先の空要素の子ノードとして配置
              +sp1.appendChild(sp1_content);
              +
              +// 置換に先んじ、参照を代入
              +var sp2 = document.getElementById("childSpan"); // 既存の置換対象ノード
              +var parentDiv = sp2.parentNode; // 置換対象ノードの親要素
              +
              +// 既存ノード "sp2" を 生成済の新しい span 要素 "sp1" と置換
              +parentDiv.replaceChild(sp1, sp2);
              +
              +
              +// 上記コード実行後のノードは以下の様になります:
              +// <div>
              +//   <span id="newSpan">新しい span 要素</span>
              +// </div>
              +
              + +

              仕様書

              + + + +

              ブラウザ実装状況

              + +

              {{Compat("api.Node.replaceChild")}}

              + +

              関連情報

              + +
                +
              • {{domxref("Node.removeChild")}}
              • +
              -- cgit v1.2.3-54-g00ecf From 1649dce744ae7836e6de49971f365cc8e2bbd8f6 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 27 Feb 2022 14:34:15 +0900 Subject: 2022/01/18 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/appendchild/index.md | 135 +++++++++++++---------------- 1 file changed, 60 insertions(+), 75 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/node/appendchild/index.md b/files/ja/web/api/node/appendchild/index.md index 3242491906..6abebeaac4 100644 --- a/files/ja/web/api/node/appendchild/index.md +++ b/files/ja/web/api/node/appendchild/index.md @@ -1,97 +1,82 @@ --- -title: Node.appendChild +title: Node.appendChild() slug: Web/API/Node/appendChild tags: - - API - - DOM - - Method - - Node - - Reference + - メソッド + - リファレンス +browser-compat: api.Node.appendChild translation_of: Web/API/Node/appendChild --- -
              {{APIRef("DOM")}}
              +{{APIRef("DOM")}} -

              Node.appendChild() メソッドは、特定の親ノードの子ノードリストの末尾にノードを追加します。追加しようとしたノードが既に存在していたら、それは現在の親ノードから除かれ、新しい親ノードに追加されます(他のノードに追加する前にそのノードを親ノードから削除する必要はありません)。

              +**`appendChild()`** は {{domxref("Node")}} インターフェイスのメソッドで、指定された親ノードの子ノードリストの末尾にノードを追加します。追加しようとしたノードが既に存在していた場合は、 `appendChild()` はその子ノードを現在の位置から新しい位置へ移動します(他のノードに追加する前に、そのノードを親ノードから取り除く必要はありません)。 -

              これは、ノードが同時にドキュメントの 2 箇所に存在できないということを意味します。ノードがすでに親を持っている場合、最初にノードが削除された後、新しい位置の末尾に追加されます。{{domxref("Node.cloneNode()")}} は、新しい親の末尾に追加する前に、ノードのコピーを作成するために使用できます。cloneNode で作成したコピーは自動的に同期を保たないことに注意してください。

              +これは、 1 つのノードが同時に文書の 2 か所に存在できないということです。したがって、すでにノードに親がある場合、最初にノードが取り除かれた後、新しい位置に追加されます。 +{{domxref("Node.cloneNode()")}} メソッドを使用すると、新しい親ノード以下に追加する前に、ノードのコピーを作成することができます。 +`cloneNode` で作成したコピーは自動的に同期されません。 -

              このメソッドでは、異なるドキュメント間でノードを移動することはできません。異なるドキュメントからノードを末尾に追加したい場合は、{{domxref("document.importNode()")}} メソッドを使用する必要があります。

              +指定された子ノードが {{domxref("DocumentFragment")}} であった場合、その +{{domxref("DocumentFragment")}} の内容全体が指定された親ノードの子ノードリストに移動します。 -

              構文

              +> **Note:** このメソッドとは異なり、 {{domxref("Element.append()")}} メソッドは複数の引数や文字列の追加に対応しています。ノードが要素であった場合は、こちらを使用することができます。 -
              var aChild = element.appendChild(aChild);
              +`appendChild()` は子要素を返すので、メソッドチェーンは動作しません。 -

              引数

              +```js +let aBlock = document.createElement('block').appendChild( document.createElement('b') ); +``` -

              aChild

              +`aBlock` に `` を追加するだけですが、 `block` に対して複数の `appendChild` を連鎖させるなど、それ以外の操作を連鎖せることはできません。 -

              親ノードに追加する子ノード(要素)

              +## 構文 -

              戻り値

              +```js +appendChild(aChild); +``` -

              追加した子ノードです。ただし、{{domxref("DocumentFragment")}}を引数にした場合は、空の{{domxref("DocumentFragment")}}が戻ります。

              +### 引数 -

              注意

              +- `aChild` + - : 指定された親ノードに追加するノード(ふつうは要素)。 -

              appendChild() が子要素を返すため、メソッドチェーンが期待通りに動きません。:

              +### 返値 -
              var aBlock = doc.createElement('block').appendChild(doc.createElement('b'));
              +{{domxref("Node")}} で追加された子ノード (`aChild`) を返します。 +ただし、 `aChild` が {{domxref("DocumentFragment")}} であった場合は、空の {{domxref("DocumentFragment")}} を返します。 -

              aBlock に <b></b> を与えただけでは期待通りに動きません。

              +### 例外 -

              +- `HierarchyRequestError` {{domxref("DOMException")}} + - : DOM ツリーの制約に違反した場合に発生します。すなわち、以下のいずれかが発生する場合です。 + - `aChild` の親が {{domxref("Document")}}, {{domxref("DocumentFragment")}}, {{domxref("Element")}} のいずれにもならない場合。 + - `aChild` を挿入すると循環参照になる場合。すなわち `aChild` がこのノードの祖先である場合。 + - `aChild` が {{domxref("DocumentFragment")}}, {{domxref("DocumentType")}}, {{domxref("Element")}}, {{domxref("CharacterData")}} のいずれでもない場合。 + - 現在のノードが {{domxref("Text")}} であり、親ノードが {{domxref("Document")}} になる場合。 + - 現在のノードが {{domxref("DocumentType")}} であり、その親が {{domxref("Document")}} にならない場合。 _doctype_ は常に _document_ の直下になければならないからです。 + - このノードの親が {{domxref("Document")}} で `aChild` が {{domxref("DocumentFragment")}} であり、複数の {{domxref("Element")}} の子、または {{domxref("Text")}} の子がある場合。 + -`aChild` を挿入すると {{domxref("Document")}} の子の {{domxref("Element")}} が複数になる場合。 -
              // 新しい段落要素を作成し、ドキュメントの body の最後に追加します。
              -var p = document.createElement("p");
              +## 例
              +
              +```js
              +// 新しい段落要素を作成し、文書の body の末尾に追加します。
              +let p = document.createElement("p");
               document.body.appendChild(p);
              -
              - -

              仕様

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              仕様ステータスコメント
              {{SpecName('DOM WHATWG', '#dom-node-appendchild', 'Node.appendChild()')}}{{Spec2('DOM WHATWG')}}{{SpecName("DOM3 Core")}} から変更なし。
              {{SpecName('DOM3 Core', 'core.html#ID-184E7107', 'Node.appendChild()')}}{{Spec2('DOM3 Core')}}{{SpecName("DOM2 Core")}} から変更なし。
              {{SpecName('DOM2 Core', 'core.html#ID-184E7107', 'Node.appendChild()')}}{{Spec2('DOM2 Core')}}{{SpecName("DOM1")}} から変更なし。
              {{SpecName('DOM1', 'level-one-core.html#ID-184E7107', 'Node.appendChild()')}}{{Spec2('DOM1')}}初期定義。
              - -

              ブラウザー実装状況

              - -

              {{Compat("api.Node.appendChild")}}

              - -
              - -

              関連情報

              - -
                -
              • {{domxref("Node.removeChild()")}}
              • -
              • {{domxref("Node.replaceChild()")}}
              • -
              • {{domxref("Node.insertBefore()")}}
              • -
              • {{domxref("Node.hasChildNodes()")}}
              • -
              • {{domxref("ParentNode.append()")}}
              • -
              +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Node.removeChild()")}} +- {{domxref("Node.replaceChild()")}} +- {{domxref("Node.insertBefore()")}} +- {{domxref("Node.hasChildNodes()")}} +- {{domxref("Element.insertAdjacentElement()")}} +- {{domxref("Element.append()")}} -- cgit v1.2.3-54-g00ecf From 478de33ac5a748d403c77bed813546f57e53c05e Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 27 Feb 2022 15:00:03 +0900 Subject: 2021/11/08 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/clonenode/index.md | 75 ++++++++++++++++---------------- 1 file changed, 37 insertions(+), 38 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/node/clonenode/index.md b/files/ja/web/api/node/clonenode/index.md index db00fc7a61..ff734aa6c0 100644 --- a/files/ja/web/api/node/clonenode/index.md +++ b/files/ja/web/api/node/clonenode/index.md @@ -1,62 +1,61 @@ --- title: Node.cloneNode() slug: Web/API/Node/cloneNode +tags: + - メソッド + - リファレンス +browser-compat: api.Node.cloneNode translation_of: Web/API/Node/cloneNode --- -
              {{ApiRef}}
              +{{APIRef("DOM")}} -

              概要

              +**`cloneNode()`** は {{domxref("Node")}} インターフェイスのメソッドで、このメソッドが呼び出されたノードの複製を返します。 +引数でノードに含まれるサブツリーを一緒に複製するかどうかを制御できます。 -

              現在のノードの複製を返します。

              +ノードを複製すると、固有(インライン)のリスナーを含む、ノードのすべての属性とその値が複製されます。 [`addEventListener()`](/ja/docs/Web/API/EventTarget/addEventListener) を使って追加されたイベントリスナーや、要素のプロパティに代入されたイベントリスナー(例: `node.onclick = someFunction`)は複製されません。さらに、 {{HTMLElement("canvas")}} 要素では、描画された画像は複製されません。 -

              構文

              +> **Warning:** `cloneNode()` を使用すると、文書内で要素の ID が重複する可能性があります。 +> +> 元のノードに `id` 属性があり、複製を同じ文書に配置する場合は、複製の ID が重複しないように変更してください。 +> +> また、 `name` 属性も重複した名前を使わない場面では、変更する必要があるかもしれません。 -
              var dupNode = node.cloneNode(deep);
              -
              +**異なる**文書にノードを複製する場合は、代わりに {{domxref("Document.importNode()")}} を使用してください。 -
              -
              node
              -
              複製するノード
              -
              dupNode
              -
              新しく生成される node の複製
              -
              deep {{optional_inline}}
              -
              node の子孫ノードも複製する場合は truenode のみを複製する場合は false -
              -

              注記: DOM4 の仕様では (Gecko 13.0 {{geckoRelease("13.0")}} で実装) 、 deep は省略可能な引数です。省略された場合、 deep には true が渡され、深い複製を生成します。浅い複製を生成するには、 deepfalse にする必要があります。

              +## 構文 -

              以前のDOMの仕様を実装しているブラウザでは、 deep は必須の引数です。

              -
              -
              -
              +```js +cloneNode(); +cloneNode(deep); +``` -

              +### 引数 -
              var p = document.getElementById("para1");
              -var p_prime = p.cloneNode(true);
              -
              +- `deep` {{optional_inline}} -

              注記

              + - : `true` の場合、ノードとそのサブツリーは、子ノードの {{domxref("Text")}} にあるテキストも含め複製されます。 -

              ノードを複製すると、そのノードのすべての属性とその値がコピーされます。つまり、HTML属性のイベントを含みます。addEventListener() を使用したものや、要素のプロパティに代入されたもの (例: node.onclick = fn;) は複製されません。

              + `false` の場合、このノードのみが複製されます。 + サブツリーは、そのノードに含まれているテキストも含め、複製されません。 -

              cloneNode によって返される複製ノードは、 {{domxref("Node.appendChild()")}} や同種のメソッドによってドキュメントの一部である他のノードに追加されるまでは、ドキュメントの一部ではありません。また、他のノードに追加されるまでは、親ノードを持ちません。

              + なお、 `deep` は {{HTMLElement("img")}} や {{HTMLElement("input")}} のような空要素には効果がありません。 -

              deepfalse に設定されていると、どの子ノードも複製されません。 そのため、そのノードに含まれる {{domxref("Text")}} ノードも複製されません。

              +### 返値 -

              deeptrue に評価できる場合、サブツリー全体 (子 {{domxref("Text")}} ノードにあるテキストを含む) もコピーされます。 {{HTMLElement("img")}} や {{HTMLElement("input")}} 要素などの空ノードの場合には deep を true と false のどちらに設定してもかまいません。

              +複製された {{domxref("Node")}} を返します。 +複製されたノードには、文書に所属する他のノードに {{domxref("Node.appendChild()")}} などを使用して追加されるまで、親ノードがなく、文書にも所属していません。 -
              注意: cloneNode() を使用すると、ドキュメント内で要素の id が重複する可能性があります。
              +## 例 -

              別のドキュメントに追加するためにノードを複製する場合は、代わりに {{domxref("Document.importNode()")}} を使用してください。

              +```js +let p = document.getElementById("para1") +let p_prime = p.cloneNode(true) +``` -

              ブラウザ実装状況

              +## 仕様書 -

              {{Compat("api.Node.cloneNode")}}

              +{{Specifications}} -

              仕様書

              +## ブラウザーの互換性 -
                -
              • {{Spec("http://w3.org/TR/DOM-Level-2-Core/core.html#ID-3A0ED0A4","DOM Level 2 Core: cloneNode","REC")}}
              • -
              • {{Spec("http://w3.org/TR/DOM-Level-3-Core/core.html#ID-3A0ED0A4","DOM Level 3 Core: cloneNode","REC")}}
              • -
              • DOM4: cloneNode (草案)
              • -
              +{{Compat}} -- cgit v1.2.3-54-g00ecf From 38a18236aca758a3c29963a8654ab7c5d84dd9ca Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 27 Feb 2022 15:00:03 +0900 Subject: 2021/11/08 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/api/node/comparedocumentposition/index.md | 173 ++++++++------------ files/ja/web/api/node/contains/index.md | 88 +++++------ files/ja/web/api/node/isdefaultnamespace/index.md | 96 +++++++---- files/ja/web/api/node/isequalnode/index.md | 116 +++++++------- files/ja/web/api/node/issupported/index.md | 87 +++++----- files/ja/web/api/node/removechild/index.md | 175 +++++++++++---------- files/ja/web/api/node/replacechild/index.md | 113 +++++++------ 7 files changed, 429 insertions(+), 419 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/node/comparedocumentposition/index.md b/files/ja/web/api/node/comparedocumentposition/index.md index 5865081c84..346dc65e73 100644 --- a/files/ja/web/api/node/comparedocumentposition/index.md +++ b/files/ja/web/api/node/comparedocumentposition/index.md @@ -1,118 +1,69 @@ --- -title: Node.compareDocumentPosition +title: Node.compareDocumentPosition() slug: Web/API/Node/compareDocumentPosition tags: - - DOM - - DOM Element Methods - - Gecko - - Gecko DOM Reference + - メソッド + - リファレンス +browser-compat: api.Node.compareDocumentPosition translation_of: Web/API/Node/compareDocumentPosition --- -
              {{ApiRef}}
              - -

              概要

              - -

              そのノードと別のノードの位置を比較し、結果となるビットマスクを返します。

              - -

              構文

              - -
              node.compareDocumentPosition( otherNode )
              -
              - -

              パラメーター

              - -
              -
              node
              -
              比較元ノード
              -
              otherNode
              -
              node と比較する別ノード
              -
              - -

              返り値

              - -

              呼び出し元の node と {{domxref("Document")}} 内の otherNode の関係を表すビットの整数値。複数の条件に適応する場合、1つ以上のビットがセットされることがあります。compareDocumentPosition() を呼び出した node と比較して、otherNode が 文書のより前にあり、かつ node を含んでいるならば、DOCUMENT_POSITION_CONTAINS と DOCUMENT_POSITION_PRECEDING のビットがセットされ、結果は0x0Aもしくは10進数の10になります。

              - -

              注記

              - -

              戻り値は以下の値を持つビットマスクの何れかとなります。

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              名称
              DOCUMENT_POSITION_DISCONNECTED1
              DOCUMENT_POSITION_PRECEDING2
              DOCUMENT_POSITION_FOLLOWING4
              DOCUMENT_POSITION_CONTAINS8
              DOCUMENT_POSITION_CONTAINED_BY16
              DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC32
              - -

              - -
              var head = document.getElementsByTagName('head').item(0);
              -
              -if ( head.compareDocumentPosition(document.body) & Node.DOCUMENT_POSITION_FOLLOWING ) {
              -  console.log("head 要素は body 要素より前に記述されています。");
              +{{APIRef("DOM")}}
              +
              +**`compareDocumentPosition()`** は {{domxref("Node")}} インターフェイスのメソッドで、引数のノードの位置を、呼び出されたノードからの相対位置で報告します。
              +
              +## 構文
              +
              +```js
              +compareDocumentPosition(otherNode);
              +```
              +
              +### 引数
              +
              +- `otherNode`
              +  - : {{domxref("Node")}} で、このノードとの相対位置を報告するノードを指定します。
              +
              +### 返値
              +
              +整数値で、 `otherNode` の `node` から見た相対位置を、以下の {{domxref("Node")}} の定数プロパティを組み合わせた[ビットマスク]()で表します。
              +
              +- `Node.DOCUMENT_POSITION_DISCONNECTED` (`1`)
              +  - : 両方のノードが、異なる文書、または同じ文書の異なるツリーにあります。
              +- `Node.DOCUMENT_POSITION_PRECEDING` (`2`)
              +  - : `otherNode` はこのノードより、両者を含むツリーの[前順深さ優先走査](https://ja.wikipedia.org/wiki/木構造_(データ構造)#深さ優先探索)で前にある(祖先ノード、前にある兄弟ノード、前にある兄弟ノードの子孫ノード、祖先ノードの前にある兄弟ノードなど)か、(接続されていないのであれば)任意だが一貫した順序で、そのノードよりも前に位置します。
              +- `Node.DOCUMENT_POSITION_FOLLOWING` (`4`)
              +  - : `otherNode` はこのノードより、両者を含むツリーの[前順深さ優先走査](https://ja.wikipedia.org/wiki/木構造_(データ構造)#深さ優先探索)で後にある(子孫ノード、後にある兄弟ノード、後にある兄弟ノードの子孫ノード、祖先ノードの後にある兄弟ノードなど)か、(接続されていないのであれば)任意だが一貫した順序で、そのノードよりも後に位置します。
              +- `Node.DOCUMENT_POSITION_CONTAINS` (`8`)
              +  - : `otherNode` はこのノードの祖先ノードです。
              +- `Node.DOCUMENT_POSITION_CONTAINED_BY` (`16`)
              +  - : `otherNode` はこのノードの子孫ノードです。
              +- `Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC` (`32`)
              +  - : その結果は、任意や実装固有の動作に依存し、移植性は保証されません。
              +
              +複数の条件に適合する場合、複数のビットが設定されることがあります。例えば、 `otherNode` が文書中でより先にあり、**_かつ_** `compareDocumentPosition()` が呼び出されたノードを含んでいれば、 `DOCUMENT_POSITION_CONTAINS` と `DOCUMENT_POSITION_PRECEDING` の両ビットが設定され、 `10` (`0x0A`) という値になります。
              +
              +## 例
              +
              +```js
              +const head = document.head;
              +const body = document.body;
              +
              +if (head.compareDocumentPosition(body) & Node.DOCUMENT_POSITION_FOLLOWING) {
              +  console.log('正しい形式の文書です');
               } else {
              -  console.log("head 要素は body 要素の前に配置しなくてはなりません。");
              +  console.error(' が  の前にありません');
               }
              -
              - -
              -

              注記: compareDocumentPosition の戻り値はビットマスクです。よって、有意な結果を得るには ビット演算子の "&" を用いなくてはならない点に注意して下さい。

              -
              - -

              仕様

              - - - - - - - - - - - - - - - - - - - - - -
              仕様書策定状況コメント
              DOM Level 3Recommendation
              DOM StandardLiving standard
              - -

              関連情報

              - - +``` + +> **Note:** `compareDocumentPosition()` の返値はビットマスクですので、意味のある結果を得るには[ビット AND 演算子](/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_AND)を使用する必要があります。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{DOMxRef("Node.contains()")}} diff --git a/files/ja/web/api/node/contains/index.md b/files/ja/web/api/node/contains/index.md index 2947ce92d1..6bcb67f897 100644 --- a/files/ja/web/api/node/contains/index.md +++ b/files/ja/web/api/node/contains/index.md @@ -1,56 +1,56 @@ --- -title: Node.contains +title: Node.contains() slug: Web/API/Node/contains tags: - - API - - DOM - - Method - - Node + - メソッド + - リファレンス +browser-compat: api.Node.contains translation_of: Web/API/Node/contains --- -
              {{APIRef("DOM")}}
              +{{APIRef("DOM")}} -

              Node.contains メソッドは指定ノードの子孫ノードに特定の子ノード(※自身も含む)が含まれるかどうかを示す真偽値を返します。

              +**`contains()`** は {{domxref("Node")}} インターフェイスのメソッドで、あるノードが指定されたノードの子孫であるか、すなわち、このノード自体であるか、直接の子ノード ({{domxref("Node.childNodes", "childNodes")}}) の何れかであるか、直接の子ノードの子ノードの何れかであるか(以下同様)を示す論理値を返します。 -

              構文

              +> **Note:** ノードは自分自身に**含まれます**。 -
              node.contains( otherNode )
              -
              +## 構文 -

              +```js +contains(otherNode); +``` -

              この関数は、ある要素がそのページの body 要素に含まれるかどうかをチェックするものです。contains は包括的かつ決定的であるため、body がそれ自身を含むかどうかは isInPage の意図ではないため明示的に false を返します。

              +### 引数 -
              function isInPage(node) {
              +- `otherNode`
              +  - : 検査する {{domxref("Node")}} です。
              +    > **Note:** `otherNode` は省略できませんが、 `null` に設定することはできます。
              +
              +### 返値
              +
              +論理値で、 `true` は `otherNode` がそのノードに含まれていることを表します。
              +そうでなければ `false` になります。
              +
              +`otherNode` 引数が `null` であれば、 `contains()` は常に `false` になります。
              +
              +## 例
              +
              +この関数は、ある要素がそのページの body 要素に含まれるかどうかを検査するものです。 `contains` は包括的かつ決定的であるため、 body がそれ自身を含むかどうかは `isInPage` の意図するところではないため、明示的に `false` を返します。
              +
              +```js
              +function isInPage(node) {
                 return (node === document.body) ? false : document.body.contains(node);
              -}
              - -

              仕様

              - - - - - - - - - - - - - - - - -
              仕様ステータスコメント
              {{SpecName("DOM WHATWG", "#dom-node-contains", "Node.contains()")}}{{Spec2("DOM WHATWG")}}Initial definition
              - -

              ブラウザ実装状況

              - -

              {{Compat("api.Node.contains")}}

              - -

              関連情報

              - -
                -
              • {{domxref("Node.compareDocumentPosition")}}
              • -
              • {{domxref("Node.hasChildNodes")}}
              • -
              +} +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Node.compareDocumentPosition")}} +- {{domxref("Node.hasChildNodes")}} diff --git a/files/ja/web/api/node/isdefaultnamespace/index.md b/files/ja/web/api/node/isdefaultnamespace/index.md index 018e6562cc..44f1b3acec 100644 --- a/files/ja/web/api/node/isdefaultnamespace/index.md +++ b/files/ja/web/api/node/isdefaultnamespace/index.md @@ -1,35 +1,71 @@ --- -title: Node.isDefaultNamespace +title: Node.isDefaultNamespace() slug: Web/API/Node/isDefaultNamespace tags: - - DOM - - Gecko DOM Reference - - Namespaces - - Node + - メソッド + - リファレンス +browser-compat: api.Node.isDefaultNamespace translation_of: Web/API/Node/isDefaultNamespace --- -
              - {{ApiRef}}
              -

              概要

              -

              isDefaultNamespace は、引数としてネームスペース URI を受け取り、ネームスペースが指定されたノードのデフォルトのネームスペースである場合に true を返します。そうでない場合は false を返します。

              -

              構文

              -
              result = node.isDefaultNamespace(namespaceURI)
              -
              -
                -
              • result : 戻り値は真偽値 (true / false) となる
              • -
              • namespaceURI : 要素に対してチェックする、名前空間を表す文字列
              • -
              -

              -
              var XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
              -var el = document.getElementsByTagNameNS(XULNS, 'textbox')[0];
              -
              -alert(el.isDefaultNamespace(XULNS)); // true
              -

              仕様書

              - -

              関連情報

              - +{{APIRef("DOM")}} + +**`isDefaultNamespace()`** は {{domxref("Node")}} インターフェイスのメソッドで、名前空間 URI を引数として受け取ります。 +その名前空間がこのノードの既定の名前空間である場合は `true` を返し、そうでない場合は `false` を返します。 + +> **Note:** 既定の名前空間は、 HTML 要素では常に `""` です。 SVG 要素では、 `xmlns` 属性で設定されます。 + +## 構文 + +```js +isDefaultNamespace(namespaceURI); +``` + +### 引数 + +- `namespaceURI` + - : 要素の検査対象となる名前空間を表す文字列です。 + > **Note:** `namespaceURI` は省略可能ではありませんが、 `null` に設定することはできます。 + +### 返値 + +`true` または `false` の値を持つ論理値で、引数が既定の名前空間であるかどうかを示します。 + +## 例 + +```html +"" が <output> の既定の名前空間であるか: 未検査
              +"http://www.w3.org/2000/svg" が <output> の既定の名前空間であるか: 未検査
              +"" が <svg> の既定の名前空間であるか: 未検査
              +"http://www.w3.org/2000/svg" が <svg> の既定の名前空間であるか: 未検査
              + + +``` + +```js +const button = document.getElementsByTagName('button')[0]; +button.addEventListener("click", function () { + const aHtmlElt = document.getElementsByTagName('output')[0]; + const aSvgElt = document.getElementsByTagName('svg')[0]; + + const result = document.getElementsByTagName('output'); + result[0].value = aHtmlElt.isDefaultNamespace(""); // true + result[1].value = aHtmlElt.isDefaultNamespace("http://www.w3.org/2000/svg"); // false + result[2].value = aSvgElt.isDefaultNamespace(""); // true + result[3].value = aSvgElt.isDefaultNamespace("http://www.w3.org/2000/svg"); // false +}); +``` + +{{ EmbedLiveSample('Example','100%',130) }} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Node.lookupNamespaceURI")}} +- {{domxref("Node.lookupPrefix")}} diff --git a/files/ja/web/api/node/isequalnode/index.md b/files/ja/web/api/node/isequalnode/index.md index 3eced87fe0..b4c71cc44a 100644 --- a/files/ja/web/api/node/isequalnode/index.md +++ b/files/ja/web/api/node/isequalnode/index.md @@ -1,90 +1,82 @@ --- -title: Node.isEqualNode +title: Node.isEqualNode() slug: Web/API/Node/isEqualNode +tags: + - メソッド + - リファレンス +browser-compat: api.Node.isEqualNode translation_of: Web/API/Node/isEqualNode --- -
              {{ApiRef}}
              +{{APIRef("DOM")}} -

              概要

              +**`isEqualNode()`** は {{domxref("Node")}} インターフェイスのメソッドで、 2 つのノードが等しいかどうかを検査します。 +2 つのノードは、同じ型、定義特性(要素の場合、 ID や子ノードの数など)、その属性が一致している場合、等しいといえます。データで一致が求められる具体的な点は、ノードの型によって異なります。 -

              Node.isEqualNode()は2つのノードが同値かどうかをテストします。それぞれのノードが同じ型で、同じ特性(要素であればIDや子要素の数など)、属性値などを持つ場合、同値と判定されます。比較される内容はノードの型によって異なります。

              +## 構文 -

              構文

              +```js +isEqualNode(otherNode); +``` -
              var isEqualNode = node.isEqualNode(otherNode);
              -
              +### 引数 -
                -
              • otherNode : 同値性を比較する対象の {{domxref("Node")}}
              • -
              +- `otherNode` + - : 比較対象となる {{domxref("Node")}} です。 + > **Note:** この引数は省略可能ではありませんが、 `null` に設定することはできます。 -

              +### 返値 -

              3つの {{HTMLElement("div")}} ブロックを作成する例を示します。1つめと3つめは同じ内容と属性を持ち、2番目は異なっています。このとき、isEqualNode() を使ってJavaScriptでノードを比較した結果は以下のようになります。

              +論理値で、 2 つのノードが等しければ `true`、そうでなければ `false` です。 +`otherNode` が `null` であった場合、 `isEqualNode()` は常に false を返します。 -

              HTML

              +## 例 -
              <div>最初の要素です。</div>
              -<div>2番目の要素です。</div>
              -<div>最初の要素です。</div>
              +この例では、 3 つの {{HTMLElement("div")}} ブロックを作成しています。 1 つ目と 3 つ目は内容と属性が同じであり、 2 つ目は異なっています。このとき、`isEqualNode()` を使って JavaScript でノードを比較した結果は以下のようになります。
               
              -<p id="output"></p>
              +### HTML - +

              +``` -

              JavaScript

              +```css hidden +#output { + width: 440px; + border: 2px solid black; + border-radius: 5px; + padding: 10px; + margin-top: 20px; + display: block; +} +``` -
              let output = document.getElementById("output");
              -let divList  = document.getElementsByTagName("div");
              -
              -output.innerHTML += "div 0 と div 0 は同じか: " + divList[0].isEqualNode(divList[0]) + "<br/>";
              -output.innerHTML += "div 0 と div 1 は同じか: " + divList[0].isEqualNode(divList[1]) + "<br/>";
              -output.innerHTML += "div 0 と div 2 は同じか: " + divList[0].isEqualNode(divList[2]) + "<br/>";
              +### JavaScript -

              Results

              - -

              {{ EmbedLiveSample('Example', 480) }}

              +```js +let output = document.getElementById("output"); +let divList = document.getElementsByTagName("div"); -

              -

              仕様

              +output.innerHTML += "div 0 と div 0 は同じか: " + divList[0].isEqualNode(divList[0]) + "
              "; +output.innerHTML += "div 0 と div 1 は同じか: " + divList[0].isEqualNode(divList[1]) + "
              "; +output.innerHTML += "div 0 と div 2 は同じか: " + divList[0].isEqualNode(divList[2]) + "
              "; +``` +### 結果 - - - - - - - - - - - - - - - -
              仕様ステータスコメント
              {{SpecName('DOM WHATWG', '#dom-node-isequalnode', 'Node.isEqualNode')}}{{Spec2('DOM WHATWG')}}
              +{{ EmbedLiveSample('Example', "100%", "210") }} -

              ブラウザー互換性

              +## 仕様書 +{{Specifications}} +## ブラウザーの互換性 -

              {{Compat("api.Node.isEqualNode")}}

              +{{Compat}} -

              参考

              +## 関連情報 -
                -
              • {{domxref("Node.isSameNode()")}}
              • -
              +- {{domxref("Node.isSameNode()")}} diff --git a/files/ja/web/api/node/issupported/index.md b/files/ja/web/api/node/issupported/index.md index 3b25dc254b..db0b3935ee 100644 --- a/files/ja/web/api/node/issupported/index.md +++ b/files/ja/web/api/node/issupported/index.md @@ -1,44 +1,53 @@ --- -title: Node.isSupported +title: Node.isSupported() slug: Web/API/Node/isSupported tags: - - DOM - - DOM Element Methods - - Gecko - - Gecko DOM Reference + - メソッド + - 非推奨 + - リファレンス +browser-compat: api.Node.isSupported translation_of: Web/API/Node/isSupported --- -
              - {{ApiRef}}{{obsolete_header("22")}}
              -

              概要

              -

              指定された機能が DOM 実装に含まれており、このノードでサポートされているかどうかをテストします。

              -

              構文

              -
              element.isSupported(feature, version)
              -
              -
              - feature
              -
              - テストする機能の名前。DOMImplementationhasFeature メソッドに渡される名前と同じです。コア DOM 仕様に定義された使用可能な値は、DOM Level 2 の Conformance セクション にリストがあります。
              -
              - version
              -
              - テストする機能のバージョン番号。DOM Level 2, version 1 では、この文字列は 2.0 になります。バージョンが指定されていなかったり、対象の機能がどのバージョンでもサポートされている場合は true を返します。
              -
              -

              -
              <div id="doc">
              -</div>
              -
              -<script>
              - // 要素を取得し、その要素が DOM2 HTML モジュールをサポートしているかどうかを確認します
              - var main = document.getElementById('doc');
              - var output = main.isSupported('HTML', '2.0');
              -</script>
              -
              -

              仕様

              - -

              Gecko に関する注記

              -
                -
              • Gecko 19.0 {{geckoRelease("19.0")}} 以降では、このメソッドは常に true を返します。また、このメソッドは Gecko 22.0 {{geckoRelease("22.0")}} で削除されています。
              • -
              +{{APIRef("DOM")}}{{deprecated_header}} + +**`isSupported()`** は {{domxref("Node")}} インターフェイスのメソッドで、この DOM の実装が指定された機能を実装しており、このノードがこの機能に対応しているかどうかを検査した結果を論理値で返します。 + +## 構文 + +```js +isSupported(feature, version); +``` + +### 引数 + +- `feature` + - : 文字列で、検査する機能の名前を指定します。 + これは [DOMImplementation](/ja/docs/Web/API/Document/implementation) の `hasFeature` メソッドに渡すものと同じ名前です。有効な値については、 [Conformance の章](https://www.w3.org/TR/DOM-Level-2-Core/introduction.html#ID-Conformance)にあります。 +- `version` + - : 文字列で、検査する機能のバージョン番号を指定します。 + DOM Level 2 第 1 版では、これは `2.0` という文字列です。このバージョンが指定されなかった場合、何れかの版のメソッドが対応していれば、このメソッドは true を返します。 + +## 例 + +```html +
              +
              + + +``` + +## 仕様書 + +この機能は仕様書に含まれていません。標準化路線から外れました。 + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Node.isEqualNode()")}} diff --git a/files/ja/web/api/node/removechild/index.md b/files/ja/web/api/node/removechild/index.md index ff64604414..335eea5b85 100644 --- a/files/ja/web/api/node/removechild/index.md +++ b/files/ja/web/api/node/removechild/index.md @@ -1,124 +1,125 @@ --- -title: Node.removeChild +title: Node.removeChild() slug: Web/API/Node/removeChild tags: - - DOM - - Gecko - - Node + - メソッド + - リファレンス +browser-compat: api.Node.removeChild translation_of: Web/API/Node/removeChild --- -

              Node.removeChild() メソッドは、 DOM から子ノードを取り除きます。取り除いたノードを返します。

              +{{APIRef("DOM")}} -

              構文

              +**`removeChild()`** は {{domxref("Node")}} インターフェイスのメソッドで、子ノードを DOM から取り除き、取り除いたノードを返します。 -
              var oldChild = node.removeChild(child);
              -または
              -node.removeChild(child);
              -
              +> **Note:** 取り除かれた子ノードへの参照が保持されている限り、子ノードはメモリー内に残りますが、 DOM の一部ではなくなります。 +> 後のコードで再利用することができます。 +> +> `removeChild()` の返値が保持されず、他の参照もなくなった場合は、まもなくメモリーから[自動的に削除](/en-US/docs/Web/JavaScript/Memory_Management)されます。 -
                -
              • child は DOM から取り除く、子ノードです。
              • -
              • nodechild の親ノードです。
              • -
              • oldChild は 取り除かれた子ノードへの参照を保持します。 oldChild === child です。
              • -
              +{{domxref("Node.cloneNode()")}} とは異なり、返値は関連付けられた {{domxref("EventListener")}} オブジェクトを保持します。 -

              取り除かれた子ノードはメモリ内に残りますが、 DOM の一部ではなくなります。最初の構文にある通り、取り除いたノードは、 oldChild オブジェクト参照を通じて、後でコード中で再利用することができます。

              +## 構文 -

              しかし、第二の構文では oldChild の参照が保持されないので、コードが他の場所でノードへの参照を持っていなければ、直ちに使用できなくなり、無関係になり、ふつうはまもなくメモリから 自動的に削除されます。

              +```js +removeChild(child); +``` -

              child が実際には element ノードの子ではない場合、このメソッドは例外を発生します。これは child が呼び出し時には実際に element の子であったものの、要素を取り除こうと呼び出されたイベントハンドラーによって削除された場合にも発生します。

              +### 引数 -

              このメソッドでは、2つの異なる方法で例外が発生します。

              +- `child` + - : {{domxref("Node")}} で、 DOM から取り除きたい子ノードを指定します。 -
                -
              1. -

                child が実際に element の子であり、 DOM 上に存在していたが削除された場合、このメソッドでは次の例外が発生します。

                +### 例外 -

                Uncaught NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.

                -
              2. -
              3. -

                child がページの DOM 上に存在しない場合、このメソッドでは次の例外が発生します。
                -
                - Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.

                -
              4. -
              +- `NotFoundError` {{domxref("DOMException")}} + - : `child` がこのノードの子ではない場合に発生します。 +- {{jsxref("TypeError")}} + - : `child` が `null` であった場合に発生します。 -

              +## 例 -
              <!-- 対象とする HTML のコード -->
              -<div id="top" > </div>
              +### 単純な例
               
              -<script type="text/javascript">
              -      var top = document.getElementById("top");
              -      var nested = document.getElementById("nested");
              +この HTML を使います。
               
              -      var garbage = top.removeChild(nested);    //Test Case 2: the method throws the exception (2)
              +```html
              +
              +
              +
              +``` -</script> +親ノードが分かる場合に、指定された要素を取り除きます。 -<!--Sample HTML code--> -<div id="top"> - <div id="nested"></div> -</div> +```js +let d = document.getElementById("top"); +let d_nested = document.getElementById("nested"); +let throwawayNode = d.removeChild(d_nested); +``` -<script type="text/javascript"> -  var top = document.getElementById("top"); -      var nested = document.getElementById("nested"); +親ノードが分からないときに指定された要素を取り除きます。 -  var garbage = top.removeChild(nested); // This first call remove correctly the node +```js +let node = document.getElementById("nested"); +if (node.parentNode) { + node.parentNode.removeChild(node); +} +``` -  // ...... -  garbage = top.removeChild(nested); // Test Case 1: the method in the second call here, throws the exception (1) +ある要素からすべての子を削除します。 -</script> +```js +let element = document.getElementById("top"); +while (element.firstChild) { + element.removeChild(element.firstChild); +} +``` -
              +### TypeError が発生する例 -
              <!--Sample HTML code-->
              +```html
              +
              +
              +``` -<div id="top"> - <div id="nested"></div> -</div> -
              +```js +let top = document.getElementById("top"); +let nested = document.getElementById("nested"); -
              // 親ノードから指定した子要素を除去
              -var d = document.getElementById("top");
              -var d_nested = document.getElementById("nested");
              -var throwawayNode = d.removeChild(d_nested);
              -
              +// TypeError が発生 +let garbage = top.removeChild(nested); +``` -
              // 親要素が不明、不定の場合の方法
              -var node = document.getElementById("nested");
              -if (node.parentNode) {
              -  node.parentNode.removeChild(node);
              -}
              -
              +### NotFoundError が発生する例 -
              // 要素の全ての子を除去
              -var element = document.getElementById("top");
              -while (element.firstChild) {
              -  element.removeChild(element.firstChild);
              -}
              -
              +```html + +
              +
              +
              +``` + +```js +let top = document.getElementById("top"); +let nested = document.getElementById("nested"); + +// 最初の呼び出しでは正しくノードを取り除く +let garbage = top.removeChild(nested); -

              仕様書

              +// NotFoundError が発生 +garbage = top.removeChild(nested); +``` - +## 仕様書 -

              ブラウザーの対応

              +{{Specifications}} -

              {{Compat("api.Node.removeChild")}}

              +## ブラウザーの互換性 -

              関連情報

              +{{Compat}} -
                -
              • {{domxref("Node.replaceChild")}}
              • -
              • {{domxref("Node.parentNode")}}
              • -
              • {{domxref("ChildNode.remove")}}
              • -
              +## 関連情報 -
              {{APIRef("DOM")}}
              +- {{domxref("Node.replaceChild()")}} +- {{domxref("Node.parentNode")}} +- {{domxref("Element.remove()")}} +- {{domxref("Node.cloneNode()")}} diff --git a/files/ja/web/api/node/replacechild/index.md b/files/ja/web/api/node/replacechild/index.md index 2c69ea2114..da96d01cf6 100644 --- a/files/ja/web/api/node/replacechild/index.md +++ b/files/ja/web/api/node/replacechild/index.md @@ -2,74 +2,95 @@ title: Node.replaceChild slug: Web/API/Node/replaceChild tags: - - API - - DOM - - Method - - Node - - Reference + - メソッド + - リファレンス +browser-compat: api.Node.replaceChild translation_of: Web/API/Node/replaceChild --- -
              {{ApiRef("DOM")}}
              +{{APIRef("DOM")}} -

              Node.replaceChild() メソッドは指定ノードの子ノードを別のノードに置き換えます。

              +**`replaceChild()`** は {{domxref("Node")}} 要素のメソッドで、この(親)ノードの中の子ノードを置き換えます。 -

              構文

              +**`Node.replaceChild()`** メソッドは指定ノードの子ノードを別のノードに置き換えます。 -
              replacedNode = parentNode.replaceChild(newChild, oldChild);
              -
              +## 構文 -
                -
              • newChild : oldChild を置き換える新しいノード(既存のノードは先に取り除かれます)
              • -
              • oldChild : 置き換えられる既存ノード
              • -
              • replacedNode : 置き換えられたノード(oldChild と同じノード)
              • -
              +```js +replaceChild(newChild, oldChild); +``` -

              +### 引数 -
              // <div>
              -//  <span id="childSpan">foo bar</span>
              -// </div>
              +- `newChild`
              +  - : `oldChild` を置き換える新しいノードです。
              +    > **Warning:** 新しいノードが既に DOM のどこか別なところにある場合は、まずその位置から取り除かれます。
              +- `oldChild`
              +  - : 置き換えられる子ノードです。
              +
              +> **Note:** 引数の順序で、*新しい*ものの前に*古い*ものが来るのは異例です。
              +[`Element.replaceWith()`](/ja/docs/Web/API/Element/replaceWith) は、要素であるノードのみに適用されるものですが、読んだり使用したりしやすいかもしれません。
              +
              +### 返値
              +
              +置き換えられた {{domxref("Node")}} です。これは `oldChild` と同じノードです。
              +
              +### 例外
              +
              +- `HierarchyRequestError` {{domxref("DOMException")}}
              +  - : DOM ツリーの制約に違反した場合に発生します。すなわち、以下のいずれかが発生する場合です。
              +    - `oldChild` の親が {{domxref("Document")}}, {{domxref("DocumentFragment")}}, {{domxref("Element")}} のいずれにもならない場合。
              +    - `oldChild` を `newChild` で置き換えると循環参照になる場合。すなわち `newChild` がこのノードの祖先である場合。
              +    - `newChild` が {{domxref("DocumentFragment")}}, {{domxref("DocumentType")}}, {{domxref("Element")}}, {{domxref("CharacterData")}} のいずれでもない場合。
              +    - 現在のノードが {{domxref("Text")}} であり、親ノードが {{domxref("Document")}} になる場合。
              +    - 現在のノードが {{domxref("DocumentType")}} であり、その親が {{domxref("Document")}} にならない場合。 _doctype_ は常に _document_ の直下になければならないからです。
              +    - このノードの親が {{domxref("Document")}} で `newChild` が {{domxref("DocumentFragment")}} であり、複数の {{domxref("Element")}} の子、または {{domxref("Text")}} の子がある場合。
              +    - `oldChild` を `newChild` で置き換えると、 {{domxref("Document")}} の子の {{domxref("Element")}} が複数になる場合。
              +    - `oldChild` を `newChild` で置き換えると、 {{domxref("Element")}} ノードが {{domxref("DocumentType")}} の前になる場合。
              +- `NotFoundError` {{domxref("DOMException")}}
              +  - : `oldChild` の親ノードが現在のノードではない場合に発生します。
              +
              +## 例
              +
              +```js
              +// 前提:
              +// 
              +// foo bar +//
              // ID も属性も内容も持たない空要素を生成 -var sp1 = document.createElement("span"); +const sp1 = document.createElement("span"); // 生成したノードに id 属性 'newSpan' を付与 -sp1.setAttribute("id", "newSpan"); +sp1.id = "newSpan"; -// テキストノードを生成 -var sp1_content = document.createTextNode("新しい span 要素"); +// 新しい要素にいくらかの内容を作成 +const sp1_content = document.createTextNode("新しい置換 span 要素"); -// 生成したテキストノードを先の空要素の子ノードとして配置 +// その内容を新しい要素に適用 sp1.appendChild(sp1_content); -// 置換に先んじ、参照を代入 -var sp2 = document.getElementById("childSpan"); // 既存の置換対象ノード -var parentDiv = sp2.parentNode; // 置換対象ノードの親要素 +// 置き換えられる既存のノードの参照を作る +const sp2 = document.getElementById("childSpan"); +const parentDiv = sp2.parentNode; -// 既存ノード "sp2" を 生成済の新しい span 要素 "sp1" と置換 +// 既存のノード sp2 を新しい span 要素 sp1 で置換 parentDiv.replaceChild(sp1, sp2); +// 結果: +//
              +// 新しい置換 span 要素 +//
              +``` -// 上記コード実行後のノードは以下の様になります: -// <div> -// <span id="newSpan">新しい span 要素</span> -// </div> -
              - -

              仕様書

              +## 仕様書 - +{{Specifications}} -

              ブラウザ実装状況

              +## ブラウザーの互換性 -

              {{Compat("api.Node.replaceChild")}}

              +{{Compat}} -

              関連情報

              +## 関連情報 -
                -
              • {{domxref("Node.removeChild")}}
              • -
              +- {{domxref("Node.removeChild")}} +- {{domxref("Element.replaceWith")}} -- cgit v1.2.3-54-g00ecf From a3335b2232582afc0a98d893b7e9f4987e968583 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 27 Feb 2022 16:24:00 +0900 Subject: 2022/02/01 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/haschildnodes/index.md | 70 +++++---- files/ja/web/api/node/insertbefore/index.md | 209 +++++++++++---------------- 2 files changed, 130 insertions(+), 149 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/node/haschildnodes/index.md b/files/ja/web/api/node/haschildnodes/index.md index b4ed1654d3..85717cb827 100644 --- a/files/ja/web/api/node/haschildnodes/index.md +++ b/files/ja/web/api/node/haschildnodes/index.md @@ -1,31 +1,49 @@ --- -title: Node.hasChildNodes +title: Node.hasChildNodes() slug: Web/API/Node/hasChildNodes tags: - - DOM - - Gecko - - Gecko DOM Reference + - メソッド + + - リファレンス +browser-compat: api.Node.hasChildNodes translation_of: Web/API/Node/hasChildNodes --- -
              - {{ApiRef}}
              -

              概要

              -

              hasChildNodes は指定したノード子ノードを持つか否かを示す真偽値を返します。

              -

              構文

              -
              node.hasChildNodes()
              -

              -

              "foo" を id に持つ要素の子ノードの存在を確認し、存在する場合は最初の子ノードを削除する例を以下に示します。

              -
              var foo = document.getElementById("foo");
              -
              -if ( foo.hasChildNodes() ) {
              -  foo.removeChild( foo.childNodes[0] );
              -}
              -

              仕様書

              - -

              関連情報

              -
                -
              • {{domxref("Node.childNodes")}}
              • -
              • {{domxref("Node.hasAttributes")}}
              • -
              +{{APIRef("DOM")}} + +**`hasChildNodes()`** は {{domxref("Node")}} インターフェイスのメソッドで、この {{domxref("Node")}} に[子ノード](/ja/docs/Web/API/Node/childNodes)があるかどうかを示す論理値を返します。 + +## 構文 + +```js +hasChildNodes(); +``` + +### 引数 + +なし。 + +### 返値 + +論理値で、このノードに子ノードがあれば `true` を、そうでなければ `false` を返します。 + +## 例 + +```js +let foo = document.getElementById('foo'); + +if (foo.hasChildNodes()) { + // 'foo.childNodes' で何かを行う +} +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Node.childNodes")}} diff --git a/files/ja/web/api/node/insertbefore/index.md b/files/ja/web/api/node/insertbefore/index.md index 2bfea72cdf..36ae9e86ba 100644 --- a/files/ja/web/api/node/insertbefore/index.md +++ b/files/ja/web/api/node/insertbefore/index.md @@ -2,62 +2,57 @@ title: Node.insertBefore() slug: Web/API/Node/insertBefore tags: - - API - - DOM - - Element - - Method - - Node - - Reference - メソッド + - リファレンス +browser-compat: api.Node.insertBefore translation_of: Web/API/Node/insertBefore --- -
              {{APIRef("DOM")}}
              +{{APIRef("DOM")}} -

              Node.insertBefore() メソッドは、ノードを参照ノードの前に、指定された親ノードの子として挿入します。

              +**`insertBefore()`** は {{domxref("Node")}} インターフェイスのメソッドで、*参照先ノード*の前にこの*親ノード*の子としてノードを挿入します。 -

              指定されたノードが既に文書中に存在した場合、 insertBefore() はこれを現在の位置から新しい位置に移動します。 (つまり、既存の親ノードから自動的に削除され、指定された新しい親に追加されます。)

              +指定されたノードが既に文書中に存在した場合、 `insertBefore()` はこれを現在の位置から新しい位置に移動します。(つまり、既存の親ノードから自動的に削除され、指定された新しい親に追加されます。) -

              これは、1つのノードが文書中に同時に2か所に存在できないことを意味します。

              +これは、 1 つのノードが文書中に同時に 2 か所に存在できないことを意味します。 -
              -

              メモ: {{domxref("Node.cloneNode()")}} を使用して、ノードを新しい親の下に追加する前に複製を作成することができます。なお、 cloneNode() で作成された複製は自動的には同期されません。

              -
              +> **Note:** {{domxref("Node.cloneNode()")}} を使用すると、ノードを新しい親の下に追加する前に複製を作成することができます。なお、 `cloneNode()` で作成された複製は自動的には同期されません。 -

              指定された子が {{domxref("DocumentFragment")}} である場合、 DocumentFragment の内容全体が指定された親ノードの子リストに移動されます。

              +指定された子が {{domxref("DocumentFragment")}} である場合、 `DocumentFragment` の内容全体が指定された親ノードの子リストに移動されます。 -

              構文

              +## 構文 -
              let insertedNode = parentNode.insertBefore(newNode, referenceNode)
              -
              +```js +insertBefore(newNode, referenceNode); +``` -
              -
              insertedNode
              -
              挿入されたノード (newNode と同じ) です。
              -
              parentNode
              -
              新しく挿入されるノードの親です。
              -
              newNode
              -
              挿入されるノードです。
              -
              referenceNode
              -
              newNode がこのノードの直前に挿入されます。このノードが null である場合は、 newNodeparentNode の子ノードの末尾に挿入されます。
              -
              +### 引数 -
              -

              メモ: referenceNode は省略可能な引数ではありません。明示的に {{domxref("Node")}} または null を渡す必要があります。渡し忘れた場合や無効な値を渡した場合は、ブラウザーのバージョンによって異なる動作をすることがあります。

              -
              +- `newNode` + - : 挿入するノードです。 +- `referenceNode` + - : `newNode` が挿入される位置の前にあるノードです。このノードが `null` である場合は、 `newNode` はこのノードの子ノードの末尾に挿入されます。 + > **Note:** `referenceNode` は省略可能な引数では**ありません**。 + > 明示的に {{domxref("Node")}} または `null` を渡す必要があります。 + > 渡さなかった場合や無効な値を渡した場合の[動作](https://code.google.com/p/chromium/issues/detail?id=419780)は、ブラウザーのバージョンによって[異なる](https://bugzilla.mozilla.org/show_bug.cgi?id=119489)可能性があります。 + +## 返値 -

              返値

              +追加された子ノードを返します(ただし `newNode` が {{domxref("DocumentFragment")}} の場合は、空の {{domxref("DocumentFragment")}} を返します)。 -

              追加された子ノードを返します (ただし newNode が {{domxref("DocumentFragment")}} の場合は、空の {{domxref("DocumentFragment")}} が返ります)。

              +### 例外 -

              +挿入前の検証 -

              例 1

              +## 例 -
              <div id="parentElement">
              -   <span id="childElement">foo bar</span>
              -</div>
              +### 例 1
              +
              +```html
              +
              + foo bar +
              -<script> + +``` -

              例 2

              +### 例 2 -
              <div id="parentElement">
              -  <span id="childElement">foo bar</span>
              -</div>
              +```html
              +
              + foo bar +
              -<script> -// 新しい只の <span> 要素を作成 + +``` + +> **Note:** `insertAfter()` メソッドはありません。 +> これは `insertBefore` メソッドと {{domxref("Node.nextSibling")}} の組み合わせでエミュレートできます。 +> +> 前の例では、 `sp1` は以下のようにして `sp2` の後に挿入することができます。 +> +> ```js +> parentDiv.insertBefore(sp1, sp2.nextSibling) +> ``` +> +> `sp2` に次の兄弟ノードがない場合、これが最後の子ノードです。 — `sp2.nextSibling` は `null` を返し、 `sp1` は子ノードリストの末尾(`sp2` の直後)に挿入されます。 + +### 例 3 + +要素を最初の子要素の前に挿入するために、 {{domxref("Node/firstChild", "firstChild")}} プロパティを使用します。 + +```js +// 親ノードを取得 +let parentElement = document.getElementById('parentElement') +// 親ノードの最初の子ノードを取得 +let theFirstChild = parentElement.firstChild -
              -

              メモ: insertAfter() メソッドはありません。これは insertBefore メソッドと {{domxref("Node.nextSibling")}} の組み合わせでエミュレートできます。

              -
              +// 新しい要素を取得 +let newElement = document.createElement("div") -

              前の例では、 sp1 は以下のようにして sp2 の後に挿入することができます。

              +// 最初の子ノードの前に新しい要素を挿入 +parentElement.insertBefore(newElement, theFirstChild) +``` -
              parentDiv.insertBefore(sp1, sp2.nextSibling)
              +要素に最初の子ノードがない場合、 `firstChild` は `null` になります。その場合も、要素は親ノードの最後の子ノードの後に追加されます。 -

              sp2 に次の兄弟がない場合、これは最後の子ノードです。 — sp2.nextSiblingnull を返し、 sp1 は子ノードリストの末尾 (sp2 の直後) に挿入されます。

              +親要素に最初の子ノードがない場合は、最後の子ノードもありません。結果的に、新しく挿入された要素は**唯一の**要素になります。 -

              例 3

              +## 仕様書 -

              要素を最初の子要素の前に挿入するために、 {{domxref("Node/firstChild", "firstChild")}} プロパティを使用します。

              +{{Specifications}} -
              // 親ノードを取得
              -let parentElement = document.getElementById('parentElement')
              -// 親の最初の子を取得
              -let theFirstChild = parentElement.firstChild
              +## ブラウザーの互換性
               
              -// 新しい要素を取得
              -let newElement = document.createElement("div")
              +{{Compat}}
               
              -// 最初の子の前に新しい要素を挿入
              -parentElement.insertBefore(newElement, theFirstChild)
              -
              - -

              要素に最初の子がない場合、 firstChildnull になります。その場合も、要素は親の最後の子の後に追加されます。

              - -

              親要素が最初の子を持っていない場合は、最後の子も持っていません。結果的に、新しく挿入された要素は唯一の要素になります。

              - -

              仕様書

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('DOM WHATWG','#dom-node-insertbefore','Node.insertBefore')}}{{Spec2('DOM WHATWG')}}挿入アルゴリズムのエラーを修正
              {{SpecName('DOM4','#dom-node-insertbefore','Node.insertBefore')}}{{Spec2('DOM4')}}より詳細にアルゴリズムを記述
              {{SpecName('DOM3 Core','core.html#ID-952280727','Node.insertBefore')}}{{Spec2('DOM3 Core')}}目立った変更はなし
              {{SpecName('DOM2 Core','core.html#ID-952280727','Node.insertBefore')}}{{Spec2('DOM2 Core')}}目立った変更はなし
              {{SpecName('DOM1','level-one-core.html#method-insertBefore','Node.insertBefore')}}{{Spec2('DOM1')}}導入
              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Node.insertBefore")}}

              - -

              関連情報

              - -
                -
              • {{domxref("Node.removeChild()")}}
              • -
              • {{domxref("Node.replaceChild()")}}
              • -
              • {{domxref("Node.appendChild()")}}
              • -
              • {{domxref("Node.hasChildNodes()")}}
              • -
              • {{domxref("Element.insertAdjacentElement()")}}
              • -
              • {{domxref("ParentNode.prepend()")}}
              • -
              +## 関連情報 + +- {{domxref("Node.removeChild()")}} +- {{domxref("Node.replaceChild()")}} +- {{domxref("Node.appendChild()")}} +- {{domxref("Node.hasChildNodes()")}} +- {{domxref("Element.insertAdjacentElement()")}} +- {{domxref("Element.prepend()")}} +- {{domxref("Element.before()")}} +- {{domxref("Element.after()")}} -- cgit v1.2.3-54-g00ecf From dd4c3fd91ffcfdfbbe292e9c8fe826ae76cdbfed Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 27 Feb 2022 17:17:47 +0900 Subject: 2022/02/09 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/issamenode/index.md | 112 +++++++++++++++++++++--------- 1 file changed, 78 insertions(+), 34 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/node/issamenode/index.md b/files/ja/web/api/node/issamenode/index.md index f94668cfd5..ffd47f8bf3 100644 --- a/files/ja/web/api/node/issamenode/index.md +++ b/files/ja/web/api/node/issamenode/index.md @@ -1,39 +1,83 @@ --- -title: Node.isSameNode +title: Node.isSameNode() slug: Web/API/Node/isSameNode tags: - - DOM - - Gecko DOM Reference - - Node + - メソッド + - リファレンス +browser-compat: api.Node.isSameNode translation_of: Web/API/Node/isSameNode --- -
              - {{ApiRef}}{{Obsolete_header}}
              -

              概要

              -

              ふたつのノードが同一ノードの場合は true を、異なる場合は false を返します。

              -
              - 注記: このメソッドは DOM level 4 で削除されており、Gecko 10.0 {{geckoRelease("10.0")}} やその他のブラウザの最近のバージョンには実装されていません。よって、別の方法を採る必要があります。
              -
              // 当メソッド
              -node1.isSameNode(node2)
              -
              -// 代替策
              -node1 === node2
              -node1 == node2
              -
              -
              -
              -

              構文

              -
              isSameNode = node.isSameNode(org);
              -
              -
                -
              • arg : 比較ノード
              • -
              -

              仕様書

              -
                -
              • {{spec("http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isSameNode","DOM Level 3 Core: isSameNode","REC")}}
              • -
              • {{spec("http://www.w3.org/TR/domcore/","DOM Core Level 4","WD")}} で削除されています
              • -
              -

              関連情報

              -
                -
              • {{domxref("Node.isEqualNode")}}
              • -
              +{{APIRef("DOM")}} + +**`isSameNode()`** は {{domxref("Node")}} インターフェイスのメソッドで、 [`===` 厳密等価演算子](/ja/docs/Web/JavaScript/Reference/Operators/Strict_equality)の古い別名です。 +すなわち、 2 つのノードが全く同じであるかどうか(言い換えれば、同じオブジェクトを指しているかどうか)を検査します。 + +> **Note:** `isSameNode()` を使用する必要はありません。 `===` 厳密等価演算子を使用してください。 + +## 構文 + +```js +isSameNode(otherNode); +``` + +### 引数 + +- `otherNode` + - : 検査対象となる {{domxref("Node")}} です。 + > **Note:** この引数は省略可能ではありませんが、 `null` に設定することはできます。 + +### 返値 + +論理値で、両ノードが厳密に等しい場合は `true`、そうでなければ `false` です。 + +## 例 + +この例では、 3 つの {{HTMLElement("div")}} ブロックを作成しています。 1 つ目と 3 つ目は内容と属性が同じであり、 2 つ目は異なっています。このとき、`isSameNode()` を使って JavaScript でノードを比較した結果は以下のようになります。 + +### HTML + +```html +
              最初の要素です。
              +
              2 番目の要素です。
              +
              最初の要素です。
              + +

              +``` + +```css hidden +#output { + width: 440px; + border: 2px solid black; + border-radius: 5px; + padding: 10px; + margin-top: 20px; + display: block; +} +``` + +### JavaScript + +```js +let output = document.getElementById("output"); +let divList = document.getElementsByTagName("div"); + +output.innerHTML += "div 0 と div 0 は同じか: " + divList[0].isSameNode(divList[0]) + "
              "; +output.innerHTML += "div 0 と div 1 は同じか: " + divList[0].isSameNode(divList[1]) + "
              "; +output.innerHTML += "div 0 と div 2 は同じか: " + divList[0].isSameNode(divList[2]) + "
              "; +``` + +### 結果 + +{{ EmbedLiveSample('Example', "100%", "205") }} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Node.isEqualNode()")}} -- cgit v1.2.3-54-g00ecf From dd0a249a5aca733d09f33a10b32e20e435a99da9 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 27 Feb 2022 17:35:44 +0900 Subject: 2022/01/23 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/normalize/index.md | 79 +++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 27 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/node/normalize/index.md b/files/ja/web/api/node/normalize/index.md index 83026ac378..7432a8f979 100644 --- a/files/ja/web/api/node/normalize/index.md +++ b/files/ja/web/api/node/normalize/index.md @@ -1,48 +1,73 @@ --- -title: Node.normalize +title: Node.normalize() slug: Web/API/Node/normalize tags: - - DOM - - Gecko - - Node + - メソッド + - リファレンス +browser-compat: api.Node.normalize translation_of: Web/API/Node/normalize --- -
              {{ApiRef}}
              +{{APIRef("DOM")}} -

              概要

              +**`normalize()`** は {{domxref("Node")}} インターフェイスのメソッドで、指定されたノードとその下のツリーを*正規化された*形にします。 +正規化されたサブツリーでは、サブツリー内に空のテキストノードがなくなり、隣り合うテキストノードがなくなります。 -

              指定ノードの空のノードを削除し、隣接するテキストノードをひとつに纏め、文書を「正規化 (normalize)」します。

              +## 構文 -

              構文

              +```js +normalize(); +``` -
              element.normalize();
              -
              +### 引数 -

              +なし。 -
              var wrapper = document.createElement("div");
              +### 返値
              +
              +なし。
              +
              +## 例
              +
              +```html
              +
              +```
              +
              +```js
              +let wrapper = document.createElement("div");
               
               wrapper.appendChild( document.createTextNode("Part 1 ") );
               wrapper.appendChild( document.createTextNode("Part 2 ") );
               
              -// wrapper.childNodes[0].textContent === "Part 1 "
              -// wrapper.childNodes[1].textContent === "Part 2 "
              -// この時点で、wrapper の 子ノード数は 2 です。 wrapper.childNodes.length === 2
              +let node = wrapper.firstChild;
              +let result = "正規化前:
              "; +while (node) { + result += " " + node.nodeName + ": " + node.nodeValue + "
              "; + node = node.nextSibling; +} + +wrapper.normalize(); + +node = wrapper.firstChild; +result += "

              正規化後:
              "; +while (node) { + result += " " + node.nodeName + ": " + node.nodeValue + "
              "; + node = node.nextSibling; +} + +const output = document.getElementById("result"); +output.innerHTML = result; +``` + +{{ EmbedLiveSample("Example", "100%", "170")}} -wrapper.normalize(); // 正規化 +## 仕様書 -// 正規化後の wrapper の子ノード数は 1 となっています。 wrapper.childNodes.length === 1 -// 挿入処理の為に冗長化したノードはひとつに纏められています。 wrapper.childNodes[0].textContent === "Part 1 Part 2" -
              +{{Specifications}} -

              仕様書

              +## ブラウザーの互換性 - +{{Compat}} -

              関連情報

              +## 関連情報 - +- 逆の操作である {{domxref("Text.splitText()")}} -- cgit v1.2.3-54-g00ecf From 0e16fb2efa27c368c2b92b40773982ce3a335aff Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Mon, 28 Feb 2022 02:22:47 +0900 Subject: 2021/11/08 時点の英語版に基づき新規翻訳 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/node/lookupprefix/index.md | 77 +++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 files/ja/web/api/node/lookupprefix/index.md (limited to 'files/ja') diff --git a/files/ja/web/api/node/lookupprefix/index.md b/files/ja/web/api/node/lookupprefix/index.md new file mode 100644 index 0000000000..30dcc549ac --- /dev/null +++ b/files/ja/web/api/node/lookupprefix/index.md @@ -0,0 +1,77 @@ +--- +title: Node.lookupPrefix() +slug: Web/API/Node/lookupPrefix +tags: + - メソッド + - リファレンス +browser-compat: api.Node.lookupPrefix +translation_of: Web/API/Node/lookupPrefix +--- +{{APIRef("DOM")}} + +**`lookupPrefix()`** は {{domxref("Node")}} インターフェイスのメソッドで、指定された名前空間 URI に対応する接頭辞があれば、それを含む文字列を返します。ない場合は `null` を返します。 +複数の接頭辞の可能性があれば、最初の接頭辞を返します。 + +## 構文 + +```js +lookupPrefix(namespace); +``` + +### 引数 + +- `namespace` + - : 接頭辞を検索するための名前空間の入った文字列です。 + > **Note:** この引数は省略可能ではありませんが、 `null` に設定することはできます。 + +### 返値 + +対応する接頭辞の入った文字列です。見つからなかった場合は `null` になります。 +`namespace` が null または空文字列であった場合、 `lookupPrefix()` は `null` を返します。 + +このノードが {{domxref("DocumentType")}} または {{domxref("DocumentFragment")}} であった場合は、 `lookupPrefix()` は常に `null` を返します。 + +## 例 + +```html +Prefix for http://www.w3.org/2000/svg on <output>: 未検査
              +Prefix for http://www.w3.org/XML/1998/namespace on <output>: 未検査
              +Prefix for http://www.w3.org/TR/html4/ on <output>: 未検査
              +Prefix for https://www.w3.org/1999/xlink on <output>: 未検査
              +Prefix for http://www.w3.org/2000/svg on <svg>: 未検査
              +Prefix for https://www.w3.org/1999/xlink on <svg>: 未検査
              +Prefix for http://www.w3.org/XML/1998/namespace on <svg>: 未検査
              + + +``` + +```js +const button = document.getElementsByTagName('button')[0]; +button.addEventListener("click", function () { + const aHtmlElt = document.getElementsByTagName('output')[0]; + const aSvgElt = document.getElementsByTagName('svg')[0]; + + const result = document.getElementsByTagName('output'); + result[0].value = aHtmlElt.lookupPrefix("http://www.w3.org/2000/svg"); // true + result[1].value = aHtmlElt.lookupPrefix("http://www.w3.org/XML/1998/namespace"); // false + result[2].value = aHtmlElt.lookupPrefix("http://www.w3.org/TR/html4/"); // true + result[3].value = aHtmlElt.lookupPrefix("https://www.w3.org/1999/xlink"); // false + result[4].value = aSvgElt.lookupPrefix("http://www.w3.org/2000/svg"); // true + result[5].value = aSvgElt.lookupPrefix("https://www.w3.org/1999/xlink"); // true + result[6].value = aSvgElt.lookupPrefix("http://www.w3.org/XML/1998/namespace"); // false +}); +``` + +{{ EmbedLiveSample('Example','100%',190) }} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [http://www.w3.org/TR/DOM-Level-3-Cor...amespacePrefix](https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix) -- cgit v1.2.3-54-g00ecf From beff76e80538728c83865aa5d1af2f073fd83831 Mon Sep 17 00:00:00 2001 From: Atsuto Yamashita Date: Mon, 7 Mar 2022 01:52:45 +0900 Subject: user_input_methods の推奨事項の日本語訳追加 (#4423) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 推奨事項の日本語訳追加 * 一部文言を修正 * 「-er」で終わる単語を「ー」で終わるように修正 * 不要な行を削除 --- files/ja/web/guide/user_input_methods/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/guide/user_input_methods/index.html b/files/ja/web/guide/user_input_methods/index.html index 04d36acba9..5e5390d10f 100644 --- a/files/ja/web/guide/user_input_methods/index.html +++ b/files/ja/web/guide/user_input_methods/index.html @@ -27,16 +27,16 @@ translation_of: Web/Guide/User_input_methods

              推奨事項

              -

              Available input mechanisms depend on the capabilities of the device running the application:

              +

              利用できる入力の仕組みはアプリを動かしているデバイスの性能に依存します。

                -
              • Some devices provide touchscreen displays: the Web Platform offers touch events to interpret finger activity on touch-based user interfaces.
              • -
              • For devices providing a mouse/touchpad as a pointing method, the Pointer Lock API helps you in implementing a first person 3D game or other applications requiring full control of the pointing device. And the Fullscreen API helps you in displaying your app in fullscreen mode.
              • -
              • Using features such as contentEditable elements you can implement fast rich-text editors and with Drag&Drop let users moving elements inside your app. When screen orientation matters for your application, through the Screen Orientation API you can read the screen orientation state and perform other actions.
              • -
              • You should always be mindful of keyboard accessibility where appropriate — many web users only use keyboard to navigate web sites and apps, and locking them out of your functionality is a bad idea.
              • +
              • デバイスの中にはタッチスクリーンディスプレイを提供するものがあります。そのウェブプラットフォームは、タッチを基にしたユーザーインターフェースで指の動きを解釈するためのタッチイベントを提供します。
              • +
              • ポインターを操作する方法としてマウスやタッチパッドを提供しているデバイスの場合、Pointer Lock API が一人称視点の 3D ゲームの実装や、他のアプリがポイントを合わせているデバイスの全ての制御を要求するのに役立ちます。そして Fullscreen API は、あなたのアプリをフルスクリーンモードで表示するのに役立ちます。
              • +
              • コンテンツが編集可能な要素(contentEditable など)のような機能を使うことで、速いリッチテキストエディターを実装することができ、そしてドラッグ&ドロップ APIはユーザーがあなたのアプリ内に要素を移動することを可能にします。画面の向きがあなたのアプリで問題である時、画面の向きを制御する API を通して、画面の向きの状態を参照でき、またその他のアクションを実行できます。 +
              • キーボードのアクセシビリティが適切か常に気に掛ける必要があります。多くのユーザーはキーボードのみを使いウェブサイトやアプリを操作します。ですので、あなたのシステムの機能性からそれを除外することは良くない考えです。
              -

              The following is a set of recommendations and best practices for using such tools in Open Web Apps.

              +

              以下は推奨事項一式であり、オープンなウェブアプリでそのようなツールを利用するためのベストプラクティスです。

              Decide what input mechanism you’re using

              -- cgit v1.2.3-54-g00ecf From 95206a9aecc234f58dc001eb36553efc71cfb9e3 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Mon, 7 Mar 2022 23:02:04 +0900 Subject: Element インターフェイスの記事を更新 (#4313) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Element インターフェイスの記事を移行 * 2022/02/28 時点の英語版に同期 * Update files/ja/web/api/element/index.md Co-authored-by: potappo Co-authored-by: potappo --- files/ja/web/api/element/index.html | 464 ------------------------------------ files/ja/web/api/element/index.md | 442 ++++++++++++++++++++++++++++++++++ 2 files changed, 442 insertions(+), 464 deletions(-) delete mode 100644 files/ja/web/api/element/index.html create mode 100644 files/ja/web/api/element/index.md (limited to 'files/ja') diff --git a/files/ja/web/api/element/index.html b/files/ja/web/api/element/index.html deleted file mode 100644 index 6bece2f11f..0000000000 --- a/files/ja/web/api/element/index.html +++ /dev/null @@ -1,464 +0,0 @@ ---- -title: Element -slug: Web/API/Element -tags: - - API - - DOM - - DOM Reference - - Element - - Interface - - Reference - - Web API -browser-compat: api.Element -translation_of: Web/API/Element ---- -
              {{APIRef("DOM")}}
              - -

              Element は {{DOMxRef("Document")}} の中にあるすべての要素オブジェクト (すなわち、要素を表現するオブジェクト) が継承する、もっとも一般的な基底クラスです。このインターフェイスは、すべての種類の要素に共通するメソッドとプロパティを記述するだけのものです。多くの具体的なクラスが Element を継承します。例えば HTML 要素には {{DOMxRef("HTMLElement")}} インターフェイス、SVG 要素には {{DOMxRef("SVGElement")}} インターフェイスなど。ほとんどの機能は、クラスの階層を下りると具体化していきます。

              - -

              XUL の XULElement インターフェイスのようなウェブプラットフォームの枠外の言語もまた、Element インターフェイスを通じて要素を実装しています。

              - -

              {{InheritanceDiagram}}

              - -

              プロパティ

              - -

              Element は、親インターフェスである {{DOMxRef("Node")}}、およびその親インターフェイスである {{DOMxRef("EventTarget")}} からプロパティを継承します。

              - -
              -
              {{DOMxRef("Element.assignedSlot")}}{{readonlyInline}}
              -
              このノードが挿入された {{htmlelement("slot")}} を表す {{DOMxRef("HTMLSlotElement")}} を返します。
              -
              {{DOMxRef("Element.attributes")}} {{readOnlyInline}}
              -
              対応する HTML 要素に関連したすべての属性のリストである {{DOMxRef("NamedNodeMap")}} を返します。
              -
              {{domxref("Element.childElementCount")}} {{readonlyInline}}
              -
              この要素の子要素の数を返します。
              -
              {{domxref("Element.children")}} {{readonlyInline}}
              -
              この要素の子要素を返します。
              -
              {{DOMxRef("Element.classList")}} {{readOnlyInline}}
              -
              class 属性のトークンリストを含む {{DOMxRef("DOMTokenList")}} を返します。
              -
              {{DOMxRef("Element.className")}}
              -
              {{DOMxRef("DOMString")}} 型であり、要素のクラスを表します。
              -
              {{DOMxRef("Element.clientHeight")}} {{readOnlyInline}}
              -
              要素の内部の高さを表す {{jsxref("Number")}} を返します。
              -
              {{DOMxRef("Element.clientLeft")}} {{readOnlyInline}}
              -
              要素の左境界の幅を表す {{jsxref("Number")}} を返します。
              -
              {{DOMxRef("Element.clientTop")}} {{readOnlyInline}}
              -
              要素の上境界の幅を表す {{jsxref("Number")}} を返します。
              -
              {{DOMxRef("Element.clientWidth")}} {{readOnlyInline}}
              -
              要素の内部の幅を表す {{jsxref("Number")}} を返します。
              -
              {{domxref("Element.firstElementChild")}} {{readonlyInline}}
              -
              アクセシビリティ向けに公開されたラベルを含む {{DOMxRef("DOMString")}} を返します。
              -
              {{DOMxRef("Element.id")}}
              -
              {{DOMxRef("DOMString")}} 型であり、要素の id を表します。
              -
              {{DOMxRef("Element.innerHTML")}}
              -
              {{DOMxRef("DOMString")}} 型であり、要素内容のマークアップを表します。
              -
              {{domxref("Element.lastElementChild")}} {{readonlyInline}}
              -
              Returns the last child element of this element.
              -
              {{DOMxRef("Element.localName")}} {{readOnlyInline}}
              -
              要素の修飾名のローカル部分を表す {{DOMxRef("DOMString")}} です。
              -
              {{DOMxRef("Element.namespaceURI")}} {{readonlyInline}}
              -
              要素の名前空間の URI。名前空間がない場合は null になります。 -
              -

              注: Firefox 3.5 および以前のバージョンでは、HTML 要素の名前空間はありません。以降のバージョンでは、HTML 要素は HTML ツリーおよび XML ツリーで http://www.w3.org/1999/xhtml 名前空間内に存在します。

              -
              -
              -
              {{DOMxRef("Element.nextElementSibling")}} {{readOnlyInline}}
              -
              {{DOMxRef("Element")}} 型であり、ツリー上で自身の直後の要素 (弟) を表します。兄弟ノードがなければ null
              -
              {{DOMxRef("Element.outerHTML")}}
              -
              {{DOMxRef("DOMString")}} 型であり、その要素を内容に含むマークアップを表します。設定に用いる場合、与えられた文字列からパースされたノードでその要素を置換します。
              -
              {{DOMxRef("Element.part")}}
              -
              要素のパート識別子 (すなわち、 part 属性を使用して設定されるもの) が、 {{domxref("DOMTokenList")}} として返されます。
              -
              {{DOMxRef("Element.prefix")}} {{readOnlyInline}}
              -
              要素の名前空間接頭辞を表す {{DOMxRef("DOMString")}}。接頭辞が指定されていない場合は null
              -
              {{DOMxRef("Element.previousElementSibling")}} {{readOnlyInline}}
              -
              {{DOMxRef("Element")}} 型であり、ツリー上で自身の直前の要素 (兄) を表します。兄弟ノードが無ければ null
              -
              {{DOMxRef("Element.scrollHeight")}} {{readOnlyInline}}
              -
              要素のスクロールビューの高さを表す {{jsxref("Number")}} を返します。
              -
              {{DOMxRef("Element.scrollLeft")}}
              -
              {{jsxref("Number")}} 型であり、要素の左スクロールオフセット値を表します。
              -
              {{DOMxRef("Element.scrollLeftMax")}} {{Non-standard_Inline}} {{readOnlyInline}}
              -
              要素で可能な左スクロールオフセットの最大値を表す {{jsxref("Number")}} を返します。
              -
              {{DOMxRef("Element.scrollTop")}}
              -
              文書の上端が垂直方向にスクロールされた量をピクセル数で表す {{jsxref("Number")}} です。
              -
              {{DOMxRef("Element.scrollTopMax")}} {{Non-standard_Inline}} {{readOnlyInline}}
              -
              要素で可能な上スクロールオフセットの最大値を表す {{jsxref("Number")}} を返します。
              -
              {{DOMxRef("Element.scrollWidth")}} {{readOnlyInline}}
              -
              要素のスクロールビュー幅を表す {{jsxref("Number")}} を返します。
              -
              {{DOMxRef("Element.shadowRoot")}}{{readOnlyInline}}
              -
              要素が所持しているオープンモードの Shadow Root、あるいはオープンモードの Shadow Root がない場合は null を返します。
              -
              {{DOMxRef("Element.openOrClosedShadowRoot")}} {{Non-standard_Inline}}{{readOnlyInline}}
              -
              オープン・クローズに関係なく、要素が所持している Shadow Root を返します。WebExtensions に限り使用できます。
              -
              {{DOMxRef("Element.slot")}} {{Experimental_Inline}}
              -
              要素が挿入されている shadow DOM スロットの名前を返します。
              -
              {{DOMxRef("Element.tagName")}} {{readOnlyInline}}
              -
              要素のタグ名を {{jsxref("String")}} で返します。
              -
              - -

              ARIA から導入されたプロパティ

              - -

              Element インターフェイスは ARIAMixin ミックスインで定義されている以下のプロパティを持っています。

              - -
              -
              {{domxref("Element.ariaAtomic")}}
              -
              {{domxref("DOMString")}} で aria-atomic 属性を反映し、 aria-relevant 属性で定義された変更通知に基づいて、支援技術が変更された領域のすべてを提示するか、一部のみを提示するかを示します。
              -
              {{domxref("Element.ariaAutoComplete")}}
              -
              {{domxref("DOMString")}} で、 aria-autocomplete 属性を反映し、コンボボックス、サーチボックス、テキストボックスでテキストを入力する際に、ユーザーの意図した値の 1 つ以上の予測を表示するかどうか、予測が行われた場合にはどのように表示するかを指定します。
              -
              {{domxref("Element.ariaBusy")}}
              -
              {{domxref("DOMString")}} で aria-busy 属性を反映し、要素が修正されているかどうかを示します。支援技術では、修正が完了するまで待ってからユーザーに公開したい場合があります。
              -
              {{domxref("Element.ariaChecked")}}
              -
              {{domxref("DOMString")}} で aria-checked 属性を反映し、チェックボックス、ラジオボタン、その他のチェック状態を持つウィジェットの現在の「チェック」状態を示します。
              -
              {{domxref("Element.ariaColCount")}}
              -
              {{domxref("DOMString")}} で aria-colcount 属性を反映し、テーブル、グリッド、ツリーグリッドの列数を定義します。
              -
              {{domxref("Element.ariaColIndex")}}
              -
              {{domxref("DOMString")}} で aria-colindex 属性を反映し、テーブル、グリッド、ツリーグリッド内の列の総数に対する要素の列インデックスまたは位置を定義します。
              -
              {{domxref("Element.ariaColIndexText")}}
              -
              {{domxref("DOMString")}} で aria-colindextext 属性を反映し、 aria-colindex の代替となる人間が読めるテキストを定義します。
              -
              {{domxref("Element.ariaColSpan")}}
              -
              {{domxref("DOMString")}} で aria-colspan 属性を反映し、テーブル、グリッド、ツリーグリッド内のセルまたはグリッドセルがカバーする列数を定義します。
              -
              {{domxref("Element.ariaCurrent")}}
              -
              {{domxref("DOMString")}} で aria-current 属性を反映し、コンテナーまたは関連要素のセット内の現在の項目を表す要素を示します。
              -
              {{domxref("Element.ariaDescription")}}
              -
              {{domxref("DOMString")}} で aria-description 属性を反映し、現在の要素を説明または注釈する文字列値を定義します。
              -
              {{domxref("Element.ariaDisabled")}}
              -
              {{domxref("DOMString")}} で aria-disabled 属性を反映し、この要素が知覚可能であるが無効であるため、編集やその他の操作ができないことを示します。
              -
              {{domxref("Element.ariaExpanded")}}
              -
              {{domxref("DOMString")}} で aria-expanded 属性を反映し、この要素が所有または制御するグループ化要素が展開されているか畳まれているかを示します。
              -
              {{domxref("Element.ariaHasPopup")}}
              -
              {{domxref("DOMString")}} で aria-haspopup 属性を反映し、この要素によって引き起こされるメニューやダイアログのような対話型のポップアップ要素の有無と種類を示します。
              -
              {{domxref("Element.ariaHidden")}}
              -
              {{domxref("DOMString")}} で aria-hidden 属性を反映し、この要素がアクセシビリティ API に公開されているかどうかを示します。
              -
              {{domxref("Element.ariaKeyShortcuts")}}
              -
              {{domxref("DOMString")}} で aria-keyshortcuts 属性を反映し、要素を活性化したりフォーカスを与えたりするために作者が実装したキーボードショートカットを示します。
              -
              {{domxref("Element.ariaLabel")}}
              -
              {{domxref("DOMString")}} で aria-label 属性を反映し、現在の要素をラベル付けする文字列値を定義します。
              -
              {{domxref("Element.ariaLevel")}}
              -
              {{domxref("DOMString")}} で aria-level 属性を反映し、構造内の要素の階層レベルを定義します。
              -
              {{domxref("Element.ariaLive")}}
              -
              {{domxref("DOMString")}} で aria-live 属性を反映し、この要素が更新されること、ユーザーエージェント、支援技術、ユーザーがライブ領域から期待できる更新の種類を記述します。
              -
              {{domxref("Element.ariaModal")}}
              -
              {{domxref("DOMString")}} で aria-modal 属性を反映し、要素が表示されたときにモーダルであるかどうかを示します。
              -
              {{domxref("Element.ariaMultiline")}}
              -
              {{domxref("DOMString")}} で aria-multiline 属性を反映し、テキストボックスが複数行の入力を受け入れるか、一行のみを受け入れるかを示します。
              -
              {{domxref("Element.ariaMultiSelectable")}}
              -
              {{domxref("DOMString")}} で aria-multiselectable 属性を反映し、ユーザーが現在の選択可能な子孫から複数の項目を選択できることを示します。
              -
              {{domxref("Element.ariaOrientation")}}
              -
              {{domxref("DOMString")}} で aria-orientation 属性を反映し、要素の方向が水平、垂直、または不明/曖昧であることを示す。
              -
              {{domxref("Element.ariaPlaceholder")}}
              -
              {{domxref("DOMString")}} で aria-placeholder 属性を反映し、コントロールに値がない場合にユーザーのデータ入力を支援するための短いヒントを定義します。
              -
              {{domxref("Element.ariaPosInSet")}}
              -
              {{domxref("DOMString")}} で aria-posinset 属性を反映し、リストアイテムまたはツリーアイテムの現在のセットにおける要素の数または位置を定義します。
              -
              {{domxref("Element.ariaPressed")}}
              -
              {{domxref("DOMString")}} で aria-pressed 属性を反映し、トグルボタンの現在の「押された」状態を示します。
              -
              {{domxref("Element.ariaReadOnly")}}
              -
              {{domxref("DOMString")}} で aria-readonly 属性を反映し、要素が編集不可能であることを示すが、それ以外は操作可能であることを示します。
              -
              {{domxref("Element.ariaRelevant")}}
              -
              {{domxref("DOMString")}} で aria-relevant 属性を反映し、ライブリージョン内のアクセシビリティツリーが変更された場合に、ユーザエージェントがどのような通知を行うかを示します。これは、 aria-live リージョン内のどのような変更が関連性があり、アナウンスされるべきかを記述するために使用されます。
              -
              {{domxref("Element.ariaRequired")}}
              -
              {{domxref("DOMString")}} で aria-required 属性を反映し、フォームを送信する前に要素にユーザーの入力が必要であることを示します。
              -
              {{domxref("Element.ariaRoleDescription")}}
              -
              {{domxref("DOMString")}} で aria-roledescription 属性を反映し、要素の役割について、人間が読める、著者がローカライズした説明を定義します。
              -
              {{domxref("Element.ariaRowCount")}}
              -
              {{domxref("DOMString")}} で aria-rowcount 属性を反映し、テーブル、グリッド、ツリーグリッドの行の総数を定義します。
              -
              {{domxref("Element.ariaRowIndex")}}
              -
              {{domxref("DOMString")}} で aria-rowindex 属性を反映し、テーブル、グリッド、ツリーグリッド内の行の総数に対する要素の行インデックスまたは位置を定義します。
              -
              {{domxref("Element.ariaRowIndexText")}}
              -
              {{domxref("DOMString")}} で aria-rowindextext 属性を反映し、 aria-rowindex の代替となる人間が読めるテキストを定義しています。
              -
              {{domxref("Element.ariaRowSpan")}}
              -
              {{domxref("DOMString")}} で aria-rowspan 属性を反映し、テーブル、グリッド、ツリーグリッド内のセルまたはグリッドセルがカバーする行数を定義します。
              -
              {{domxref("Element.ariaSelected")}}
              -
              {{domxref("DOMString")}} で aria-selected 属性を反映し、選択状態を持つ要素の現在の「選択された」状態を示します。
              -
              {{domxref("Element.ariaSetSize")}}
              -
              {{domxref("DOMString")}} で aria-setsize 属性を反映し、現在のリストアイテムまたはツリーアイテムのセットのアイテム数を定義します。
              -
              {{domxref("Element.ariaSort")}}
              -
              {{domxref("DOMString")}} で aria-sort 属性を反映し、テーブルやグリッドのアイテムが昇順または降順でソートされるかどうかを示します。
              -
              {{domxref("Element.ariaValueMax")}}
              -
              {{domxref("DOMString")}} で aria-valueMax 属性を反映し、 range ウィジェットの最大許容値を定義します。
              -
              {{domxref("Element.ariaValueMin")}}
              -
              {{domxref("DOMString")}} で aria-valueMin 属性を反映し、 range ウィジェットに許容される最小値を定義します。
              -
              {{domxref("Element.ariaValueNow")}}
              -
              {{domxref("DOMString")}} で aria-valueNow 属性を反映し、 range ウィジェットの現在の値を定義します。
              -
              {{domxref("Element.ariaValueText")}}
              -
              {{domxref("DOMString")}} で aria-valuetext 属性を反映し、 range ウィジェットの aria-valuenow の代替となる人間が読めるテキストを定義ます。
              -
              - -

              イベントハンドラー

              - -
              -
              {{domxref("Element.onfullscreenchange")}}
              -
              要素が全画面モードに入ったり出たりしたときに送られる {{event("fullscreenchange")}} イベントのイベントハンドラーです。これは期待された遷移が成功したかどうかを監視するために使用することができますが、アプリの実行がバックグラウンドになった場合など、想定外の変化を監視することもできます。
              -
              {{domxref("Element.onfullscreenerror")}}
              -
              全画面モードへ移行しようとしてエラーが発生したときに送られる {{event("fullscreenerror")}} イベントのイベントハンドラーです。
              -
              - -

              メソッド

              - -

              Element は親である {{DOMxRef("Node")}}、およびその親である {{DOMxRef("EventTarget")}} からメソッドを継承しています。

              - -
              -
              {{DOMxRef("EventTarget.addEventListener()")}}
              -
              要素に特定のイベント型を扱うイベントハンドラーを登録します。
              -
              {{DOMxRef("Element.attachShadow()")}}
              -
              指定した要素に shadow DOM ツリーを結びつけて、その {{DOMxRef("ShadowRoot")}} への参照を返します。
              -
              {{DOMxRef("Element.animate()")}} {{Experimental_Inline}}
              -
              要素でアニメーションを作成および実行するためのショートカットメソッドです。作成した Animation オブジェクトのインスタンスを返します。
              -
              {{DOMxRef("Element.append()")}}
              -
              この要素の最後の子の後に、一連の {{domxref("Node")}} オブジェクトまたは {{domxref("DOMString")}} オブジェクトを挿入します。
              -
              {{DOMxRef("Element.closest()")}}
              -
              引数に指定したセレクターによって選択される要素がもっとも近い祖先要素 (または当該要素自身) を {{DOMxRef("Element")}} 型で返します。
              -
              {{DOMxRef("Element.createShadowRoot()")}} {{Non-standard_Inline}} {{Deprecated_Inline}}
              -
              要素で shadow DOM を作成します。その要素はシャドウホストになります。 {{DOMxRef("ShadowRoot")}} を返します。
              -
              {{DOMxRef("Element.computedStyleMap()")}} {{Experimental_Inline}}
              -
              {{DOMxRef("CSSStyleDeclaration")}} に代わる、CSS 宣言ブロックを読み取り専用で表現したものを提供する {{DOMxRef("StylePropertyMapReadOnly")}} インターフェイスを返します。
              -
              {{DOMxRef("EventTarget.dispatchEvent()")}}
              -
              DOM 内のこの (this) ノードにイベントを送ります。そして、イベントをキャンセルしたハンドラーがないかを示す {{jsxref("Boolean")}} を返します。
              -
              {{DOMxRef("Element.getAnimations()")}} {{Experimental_Inline}}
              -
              要素でアクティブな Animation オブジェクトの配列を返します。
              -
              {{DOMxRef("Element.getAttribute()")}}
              -
              現在ノードから指定された名前の付いた属性値を取得して、 {{jsxref("Object")}} を返します。
              -
              {{DOMxRef("Element.getAttributeNames()")}}
              -
              現在の要素の属性名の配列を返します。
              -
              {{DOMxRef("Element.getAttributeNode()")}}
              -
              現在のノードから、指定された属性のノード表現を取得し、 {{DOMxRef("Attr")}} として返します。
              -
              {{DOMxRef("Element.getAttributeNodeNS()")}}
              -
              指定された名前と名前空間を持つ属性のノード表現を現在のノードから取得し、それを {{DOMxRef("Attr")}} として返します。
              -
              {{DOMxRef("Element.getAttributeNS()")}}
              -
              現在ノードから指定された名前と名前空間 (namespase) を持つ属性値を取得して、{{jsxref("Object")}} を返します。
              -
              {{DOMxRef("Element.getBoundingClientRect()")}}
              -
              要素のサイズと、ビューポートにおける位置を返します。
              -
              {{domxref("Element.getBoxQuads()")}} {{experimental_inline}}
              -
              {{domxref("DOMQuad")}} オブジェクトのリストを返し、これはノードの CSS フラグメントを表します。
              -
              {{DOMxRef("Element.getClientRects()")}}
              -
              クライアント (ソフト) 内のテキスト上の個々の行の外接矩形 (bounding rectangle) の集合を返します。
              -
              {{DOMxRef("Element.getElementsByClassName()")}}
              -
              現在の要素から、引数に指定したクラス名のリストに該当するすべての子孫要素を持つ {{DOMxRef("HTMLCollection")}} を返します。
              -
              {{DOMxRef("Element.getElementsByTagName()")}}
              -
              現在要素から、特定のタグ名を持つすべての子孫要素の集合を取得した {{DOMxRef("HTMLCollection")}} を返します。
              -
              {{DOMxRef("Element.getElementsByTagNameNS()")}}
              -
              現在要素から、特定のタグ名と名前空間を持つすべての子孫要素の集合を取得した {{DOMxRef("HTMLCollection")}} を返します。
              -
              {{DOMxRef("Element.hasAttribute()")}}
              -
              要素が指定された指定された属性を持っているか否かを示す {{jsxref("Boolean")}} を返します。
              -
              {{DOMxRef("Element.hasAttributeNS()")}}
              -
              要素が指定された名前空間内に指定された属性を持っているか否かを示す {{jsxref("Boolean")}} を返します。
              -
              {{DOMxRef("Element.hasAttributes()")}}
              -
              要素が現在 1 つ以上の属性をもっているかを示す {{jsxref("Boolean")}} を返します。
              -
              {{DOMxRef("Element.hasPointerCapture()")}}
              -
              呼び出された要素が、指定されたポインター ID によって識別されるポインターのポインターキャプチャを持っているかどうかを示します。
              -
              {{DOMxRef("Element.insertAdjacentElement()")}}
              -
              メソッドを実行した要素に対して相対的な指定位置に、要素ノードを挿入します。
              -
              {{DOMxRef("Element.insertAdjacentHTML()")}}
              -
              テキストを HTML または XML としてパースして、パース結果のノードをツリーの指定した位置に挿入します。
              -
              {{DOMxRef("Element.insertAdjacentText()")}}
              -
              メソッドを実行した要素に対して相対的な指定位置に、テキストノードを挿入します。
              -
              {{DOMxRef("Element.matches()")}}
              -
              要素が指定されたセレクター文字列で選択されているか否かを示す {{jsxref("Boolean")}} を返します。
              -
              {{DOMxRef("Element.prepend()")}}
              -
              この要素の最初の子の前に、一連の {{domxref("Node")}} オブジェクトまたは {{domxref("DOMString")}} オブジェクトを挿入します。
              -
              {{DOMxRef("Element.querySelector()")}}
              -
              要素に対して、指定したセレクターに一致する最初の {{DOMxRef("Node")}} を返します。
              -
              {{DOMxRef("Element.querySelectorAll()")}}
              -
              要素に対して、指定したセレクターに一致するノードの {{DOMxRef("NodeList")}} を返します。
              -
              {{DOMxRef("Element.releasePointerCapture()")}}
              -
              以前に特定の {{DOMxRef("PointerEvent","pointer イベント")}}向けに設定したポインターキャプチャーを解放 (停止) します。
              -
              {{DOMxRef("Element.remove()")}}
              -
              親要素の子リストから、要素を取り除きます。
              -
              {{DOMxRef("Element.removeAttribute()")}}
              -
              現在ノードから,指定された名前を持つ属性を取り除きます。
              -
              {{DOMxRef("Element.removeAttributeNode()")}}
              -
              現在のノードから名前の付いた属性のノード表現を削除します。
              -
              {{DOMxRef("Element.removeAttributeNS()")}}
              -
              現在ノードから,指定された名前と名前空間を持つ属性を取り除きます。
              -
              {{DOMxRef("EventTarget.removeEventListener()")}}
              -
              要素からイベントリスナーを取り除きます。
              -
              {{DOMxRef("Element.replaceChildren()")}}
              -
              {{domxref("Node")}} の既存の子を指定された新しい一連の子に置き換えます。
              -
              {{DOMxRef("Element.replaceWith()")}}
              -
              親の子リストの要素を、一連の {{domxref("Node")}} または {{domxref("DOMString")}} オブジェクトで置き換えます。
              -
              {{DOMxRef("Element.requestFullscreen()")}} {{Experimental_Inline}}
              -
              要素を全画面表示するよう、ブラウザーへ非同期的に要求します。
              -
              {{DOMxRef("Element.requestPointerLock()")}} {{Experimental_Inline}}
              -
              指定した要素でポインターをロックするよう、非同期的に要求できます。
              -
              {{domxref("Element.scroll()")}}
              -
              指定された要素の中で特定の座標のセットへスクロールします。
              -
              {{domxref("Element.scrollBy()")}}
              -
              指定された量だけ要素をスクロールします。
              -
              {{DOMxRef("Element.scrollIntoView()")}} {{Experimental_Inline}}
              -
              要素がビューの内側に来るまでページをスクロールします。
              -
              {{domxref("Element.scrollTo()")}}
              -
              指定された要素の中で特定の座標のセットへスクロールします。
              -
              {{DOMxRef("Element.setAttribute()")}}
              -
              現在ノードに、指定された名前を持つ属性値を設定します。
              -
              {{DOMxRef("Element.setAttributeNode()")}}
              -
              現在のノードから指定された属性のノード表現を設定します。
              -
              {{DOMxRef("Element.setAttributeNodeNS()")}}
              -
              指定された名前と名前空間を持つ属性のノード表現を、現在のノードから設定します。
              -
              {{DOMxRef("Element.setAttributeNS()")}}
              -
              現在ノードに、指定された名前と名前空間を持つ属性値を設定します。
              -
              {{DOMxRef("Element.setCapture()")}} {{Non-standard_Inline}}{{Deprecated_Inline}}
              -
              すべてのマウスイベントを要素にリダイレクトし、マウスイベントキャプチャーを開始 (set up) します。
              -
              {{DOMxRef("Element.setPointerCapture()")}}
              -
              以降の pointer イベント のキャプチャー対象とする、特定の要素を指定します。
              -
              {{DOMxRef("Element.toggleAttribute()")}}
              -
              指定した要素で boolean 型の属性を切り替える、すなわち属性が存在していれば削除、属性が存在していなければ追加します。
              -
              - -

              イベント

              - -

              これらのイベントを待ち受けするには、 addEventListener() を使用するか、イベントリスナーをこのインターフェイスの onイベント名 プロパティに代入するかします。

              - -
              -
              {{domxref("HTMLDialogElement/cancel_event", "cancel")}}
              -
              ユーザーがブラウザーに、現在開いているダイアログを閉じたいと指示したときに {{HTMLElement("dialog")}} に発生します。ブラウザーがこのイベントを発生させる可能性があるのは、例えばユーザーが Esc キーを押したり、ブラウザーのユーザーインターフェイスの一部である「ダイアログを閉じる」ボタンをクリックしたりした場合です。
              - {{domxref("GlobalEventHandlers/oncancel", "oncancel")}} プロパティから利用することもできます。
              -
              {{domxref("Element/error_event", "error")}}
              -
              リソースの読み込みに失敗したか、利用できなかった場合に発生します。例えば、スクリプトに実行エラーがあった場合や、画像が見つからなかった場合、無効であった場合などです。
              - {{domxref("GlobalEventHandlers/onerror", "onerror")}} プロパティから利用することもできます。
              -
              {{domxref("Element/scroll_event", "scroll")}}
              -
              文書のビューまたは要素がスクロールしたときに発生します。
              - {{DOMxRef("GlobalEventHandlers.onscroll", "onscroll")}} プロパティから利用することもできます。
              -
              {{domxref("Element/select_event", "select")}}
              -
              いくらかのテキストが選択されたときに発生します。
              - {{DOMxRef("GlobalEventHandlers.onselect", "onselect")}} プロパティから利用することもできます。
              -
              {{domxref("Element/show_event", "show")}}
              -
              {{domxref("Element/contextmenu_event", "contextmenu")}} イベントが contextmenu 属性を持つ要素で発生したか、バブリングで到達した場合に発生します。 {{deprecated_inline}}
              - {{DOMxRef("GlobalEventHandlers.onshow", "onshow")}} プロパティから利用することもできます。
              -
              {{domxref("Element/wheel_event","wheel")}}
              -
              ユーザーがポインティングデバイス (普通はマウス) のホイールボタンを回転させたときに発生します。
              - {{DOMxRef("GlobalEventHandlers.onwheel", "onwheel")}} プロパティから利用することもできます。
              -
              - -

              クリップボードイベント

              - -
              -
              {{domxref("Element/copy_event", "copy")}}
              -
              ユーザーがブラウザーのユーザーインターフェイスを通して、コピー操作を行ったときに発生します。
              - {{domxref("HTMLElement/oncopy", "oncopy")}} プロパティから利用することもできます。
              -
              {{domxref("Element/cut_event", "cut")}}
              -
              ユーザーがブラウザーのユーザーインターフェイスを通して、切り取り操作を行ったときに発生します。
              - {{domxref("HTMLElement/oncut", "oncut")}} プロパティから利用することもできます。
              -
              {{domxref("Element/paste_event", "paste")}}
              -
              ユーザーがブラウザーのユーザーインターフェイスを通して、貼り付け操作を行ったときに発生します。
              - {{domxref("HTMLElement/onpaste", "onpaste")}} プロパティから利用することもできます。
              -
              - -

              構成イベント

              - -
              -
              {{domxref("Element/compositionend_event", "compositionend")}}
              -
              {{glossary("input method editor")}} のようなテキスト構成システムで、現在の入力セッションが完了またはキャンセルされたときに発生します。
              -
              {{domxref("Element/compositionstart_event", "compositionstart")}}
              -
              {{glossary("input method editor")}} のようなテキスト構成システムで、新しい入力セッションを始まったときに発生します。
              -
              {{domxref("Element/compositionupdate_event", "compositionupdate")}}
              -
              {{glossary("input method editor")}} のようなテキスト構成システムによって制御されている入力セッションのコンテキストに、新しい文字が入力されたときに発生します。
              -
              - -

              フォーカスイベント

              - -
              -
              {{domxref("Element/blur_event", "blur")}}
              -
              要素がフォーカスを失ったときに発生します。
              - {{domxref("GlobalEventHandlers/onblur", "onblur")}} プロパティから利用することもできます。
              -
              {{domxref("Element/focus_event", "focus")}}
              -
              要素がフォーカスを受け取ったときに発生します。
              - {{domxref("GlobalEventHandlers/onfocus", "onfocus")}} プロパティから利用することもできます。
              -
              {{domxref("Element/focusin_event", "focusin")}}
              -
              要素がフォーカスを受け取ろうとしているときに発生します。
              -
              {{domxref("Element/focusout_event", "focusout")}}
              -
              要素がフォーカスを失おうとしているときに発生します。
              -
              - -

              全画面イベント

              - -
              -
              {{domxref("Element/fullscreenchange_event", "fullscreenchange")}}
              -
              全画面モードへの移行時または終了時に、 {{domxref("Document")}} または {{domxref("Element")}} に送られます。
              -
              {{domxref("Element.onfullscreenchange", "onfullscreenchange")}} プロパティから利用することもできます。
              -
              {{domxref("Element/fullscreenerror_event", "fullscreenerror")}}
              -
              全画面モードへの移行または終了を試みている中でエラーが発生したときに、 Document または Element に送られます。
              -
              {{domxref("Element.onfullscreenerror", "onfullscreenerror")}} プロパティから利用することもできます。
              -
              - -

              キーボードイベント

              - -
              -
              {{domxref("Element/keydown_event", "keydown")}}
              -
              キーが押されたときに発生します。
              - {{domxref("GlobalEventHandlers/onkeydown", "onkeydown")}} プロパティから利用することもできます。
              -
              {{domxref("Element/keypress_event", "keypress")}}
              -
              文字の値を発生させるキーが押されたときに発生します。 {{deprecated_inline}}
              - {{domxref("GlobalEventHandlers/onkeypress", "onkeypress")}} プロパティから利用することもできます。
              -
              {{domxref("Element/keyup_event", "keyup")}}
              -
              キーが離されたときに発生します。
              - {{domxref("GlobalEventHandlers/onkeyup", "onkeyup")}} プロパティから利用することもできます。
              -
              - -

              マウスイベント

              - -
              -
              {{domxref("Element/auxclick_event", "auxclick")}}
              -
              ポインティングデバイスの第一ボタン以外のボタン (例えば、マウスの左ボタン以外のボタン) が要素上で押されて離されたときに発生します。
              - {{domxref("GlobalEventHandlers/onauxclick", "onauxclick")}} プロパティから利用することもできます。
              -
              {{domxref("Element/click_event", "click")}}
              -
              ポインティングデバイスのボタン (例えば、マウスの第一ボタン) が単一の要素上で押されて離されたときに発生します。
              - {{domxref("GlobalEventHandlers/onclick", "onclick")}} プロパティから利用することもできます。
              -
              {{domxref("Element/contextmenu_event", "contextmenu")}}
              -
              ユーザーがコンテキストメニューを開こうとしたときに発生します。
              - {{domxref("GlobalEventHandlers/oncontextmenu", "oncontextmenu")}} プロパティから利用することもできます。
              -
              {{domxref("Element/dblclick_event", "dblclick")}}
              -
              ポインティングデバイスのボタン (例えば、マウスの第一ボタン) が単一の要素上で2回クリックされたときに発生します。
              - {{domxref("GlobalEventHandlers/ondblclick", "ondblclick")}} プロパティから利用することもできます。
              -
              {{domxref("Element/DOMActivate_event", "DOMActivate")}} {{Deprecated_Inline}}
              -
              要素が、例えばマウスのクリックやキーの押下によってアクティブになったときに発生します。
              -
              {{domxref("Element/mousedown_event", "mousedown")}}
              -
              ポインティングデバイスのボタンが要素上で押されたときに発生します。
              - {{domxref("GlobalEventHandlers/onmousedown", "onmousedown")}} プロパティから利用することもできます。
              -
              {{domxref("Element/mouseenter_event", "mouseenter")}}
              -
              ポインティングデバイス (ふつうはマウス) が、リスナーが割り当てられた要素の上へ移動したときに発生します。
              - {{domxref("GlobalEventHandlers/onmouseenter", "onmouseenter")}} プロパティから利用することもできます。
              -
              {{domxref("Element/mouseleave_event", "mouseleave")}}
              -
              ポインティングデバイス (ふつうはマウス) が、リスナーが割り当てられた要素の外へ移動したときに発生します。
              - {{domxref("GlobalEventHandlers/onmouseleave", "onmouseleave")}} プロパティから利用することもできます。
              -
              {{domxref("Element/mousemove_event", "mousemove")}}
              -
              ポインティングデバイス (ふつうはマウス) が、要素の上を移動したときに発生します。
              - {{domxref("GlobalEventHandlers/onmousemove", "onmousemove")}} プロパティから利用することもできます。
              -
              {{domxref("Element/mouseout_event", "mouseout")}}
              -
              ポインティングデバイス (ふつうはマウス) が、リスナーが割り当てられた要素またはその子要素の外へ移動したときに発生します。
              - {{domxref("GlobalEventHandlers/onmouseout", "onmouseout")}} プロパティから利用することもできます。
              -
              {{domxref("Element/mouseover_event", "mouseover")}}
              -
              ポインティングデバイス (ふつうはマウス) が、リスナーが割り当てられた要素またはその子要素の上を移動したときに発生します。
              - {{domxref("GlobalEventHandlers/onmouseover", "onmouseover")}} プロパティから利用することもできます。
              -
              {{domxref("Element/mouseup_event", "mouseup")}}
              -
              ポインティングデバイスのボタンが要素の上で離されたときに発生します。
              - {{domxref("GlobalEventHandlers/onmouseup", "onmouseup")}} プロパティから利用することもできます。
              -
              {{domxref("Element/webkitmouseforcechanged_event", "webkitmouseforcechanged")}}
              -
              trackpadtouchscreen の上の圧力が変化するたびに発生します。
              -
              {{domxref("Element/webkitmouseforcedown_event", "webkitmouseforcedown")}}
              -
              「強制クリック」と判断されるのに十分な圧力があった直後の mousedown イベントの後で発生します。
              -
              {{domxref("Element/webkitmouseforcewillbegin_event", "webkitmouseforcewillbegin")}}
              -
              {{domxref("Element/mousedown_event", "mousedown")}} イベントの前に発生します。
              -
              {{domxref("Element/webkitmouseforceup_event", "webkitmouseforceup")}}
              -
              「強制クリック」が終了したといえるほど圧力が減少した直後の {{domxref("Element/webkitmouseforcedown_event", "webkitmouseforcedown")}} イベントの後で発生します。
              -
              - -

              タッチイベント

              - -
              -
              {{domxref("Element/touchcancel_event", "touchcancel")}}
              -
              1つ以上のタッチ点が実装依存の理由により破棄された (例えば、タッチ点が多く作られすぎた) 場合に発生します。
              - {{domxref("GlobalEventHandlers/ontouchcancel", "ontouchcancel")}} プロパティから利用することもできます。
              -
              {{domxref("Element/touchend_event", "touchend")}}
              -
              1つ以上のタッチ点がタッチ面から取り除かれたときに発生します。
              - {{domxref("GlobalEventHandlers/ontouchend", "ontouchend")}} プロパティから利用することもできます。
              -
              {{domxref("Element/touchmove_event", "touchmove")}}
              -
              1つ以上のタッチ点がタッチ面上で移動したときに発生します。
              - {{domxref("GlobalEventHandlers/ontouchmove", "ontouchmove")}} プロパティから利用することもできます。
              -
              {{domxref("Element/touchstart_event", "touchstart")}}
              -
              1つ以上のタッチ点がタッチ面に配置されたときに発生します。
              - {{domxref("GlobalEventHandlers/ontouchstart", "ontouchstart")}} プロパティから利用することもできます。
              -
              - -

              仕様書

              - -{{Specifications}} - -

              ブラウザーの互換性

              - -

              {{Compat}}

              diff --git a/files/ja/web/api/element/index.md b/files/ja/web/api/element/index.md new file mode 100644 index 0000000000..407d8b2672 --- /dev/null +++ b/files/ja/web/api/element/index.md @@ -0,0 +1,442 @@ +--- +title: Element +slug: Web/API/Element +tags: + - API + - DOM + - DOM リファレンス + - Element + - インターフェイス + - リファレンス + - Web API +browser-compat: api.Element +translation_of: Web/API/Element +--- +{{APIRef("DOM")}} + +**`Element`** は {{DOMxRef("Document")}} が継承するオブジェクトの中にあるすべての要素オブジェクト(すなわち、要素を表現するオブジェクト)が継承する、もっとも一般的な基底クラスです。すべての種類の要素の共通するメソッドとプロパティのみを持ちます。もっと具体的なクラスが `Element` を継承しています。 + +例えば {{DOMxRef("HTMLElement")}} インターフェイスは HTML 要素の基本インターフェイスであり、 {{DOMxRef("SVGElement")}} インターフェイスはすべての SVG 要素の基本になります。ほとんどの機能は、クラスの階層を下りると具体化していきます。 + +XUL の `XULElement` インターフェイスのようなウェブプラットフォームの枠外の言語もまた、`Element` インターフェイスを実装しています。 + +{{InheritanceDiagram}} + +## プロパティ + +_`Element` は、親インターフェイスである {{DOMxRef("Node")}}、およびその親インターフェイスである {{DOMxRef("EventTarget")}} からプロパティを継承しています。_ + +- {{DOMxRef("Element.assignedSlot")}}{{readonlyInline}} + - : このノードが挿入された {{htmlelement("slot")}} を表す {{DOMxRef("HTMLSlotElement")}} を返します。 +- {{DOMxRef("Element.attributes")}} {{readOnlyInline}} + - : 対応する HTML 要素に関連したすべての属性のリストである {{DOMxRef("NamedNodeMap")}} を返します。 +- {{domxref("Element.childElementCount")}} {{readonlyInline}} + - : この要素の子要素の数を返します。 +- {{domxref("Element.children")}} {{readonlyInline}} + - : この要素の子要素を返します。 +- {{DOMxRef("Element.classList")}} {{readOnlyInline}} + - : class 属性のリストが入った {{DOMxRef("DOMTokenList")}} を返します。 +- {{DOMxRef("Element.className")}} + - : {{DOMxRef("DOMString")}} で、この要素のクラスを表します。 +- {{DOMxRef("Element.clientHeight")}} {{readOnlyInline}} + - : この要素の内部の高さを表す数値を返します。 +- {{DOMxRef("Element.clientLeft")}} {{readOnlyInline}} + - : この要素の左境界の幅を表す数値を返します。 +- {{DOMxRef("Element.clientTop")}} {{readOnlyInline}} + - : この要素の上境界の幅を表す数値を返します。 +- {{DOMxRef("Element.clientWidth")}} {{readOnlyInline}} + - : この要素の内部の幅を表す数値を返します。 +- {{domxref("Element.firstElementChild")}} {{readonlyInline}} + - : この要素の最初の子要素を返します。 +- {{DOMxRef("Element.id")}} + - : {{DOMxRef("DOMString")}} で、この要素の id を表します。 +- {{DOMxRef("Element.innerHTML")}} + - : {{DOMxRef("DOMString")}} で、この要素の内容のマークアップを表します。 +- {{domxref("Element.lastElementChild")}} {{readonlyInline}} + - : この要素の最後の子要素を返します。 +- {{DOMxRef("Element.localName")}} {{readOnlyInline}} + - : {{DOMxRef("DOMString")}} で、この要素の修飾名のローカル部分を表します。 +- {{DOMxRef("Element.namespaceURI")}} {{readonlyInline}} + + - : この要素の名前空間の URI。名前空間がない場合は `null` になります。 + + > **Note:** Firefox 3.5 および以前のバージョンでは、HTML 要素の名前空間はありません。以降のバージョンでは、HTML 要素は HTML ツリーおよび XML ツリーで [`http://www.w3.org/1999/xhtml`](https://www.w3.org/1999/xhtml) 名前空間内に存在します。 + +- {{DOMxRef("Element.nextElementSibling")}} {{readOnlyInline}} + - : {{DOMxRef("Element")}} で、ツリー上で自身の直後の要素を表します。兄弟ノードがなければ `null` になります。 +- {{DOMxRef("Element.outerHTML")}} + - : {{DOMxRef("DOMString")}} で、その要素の内容を含むマークアップを表します。値が設定された場合、その文字列から解釈されたノードでその要素を置換します。 +- {{DOMxRef("Element.part")}} + - : 要素のパート識別子 (すなわち、 `part` 属性を使用して設定されるもの) が、 {{domxref("DOMTokenList")}} として返されます。 +- {{DOMxRef("Element.prefix")}} {{readOnlyInline}} + - : {{DOMxRef("DOMString")}} で、要素の名前空間接頭辞を表します。接頭辞が指定されていない場合は `null` です。 +- {{DOMxRef("Element.previousElementSibling")}} {{readOnlyInline}} + - : {{DOMxRef("Element")}} で、ツリー上で自身の直前の要素を表します。兄弟ノードが無ければ `null` です。 +- {{DOMxRef("Element.scrollHeight")}} {{readOnlyInline}} + - : この要素のスクロールビューの高さを表す数値を返します。 +- {{DOMxRef("Element.scrollLeft")}} + - : 数値型で、この要素の左スクロールオフセット値を表します。 +- {{DOMxRef("Element.scrollLeftMax")}} {{Non-standard_Inline}} {{readOnlyInline}} + - : この要素で可能な左スクロールオフセットの最大値を表す数値を返します。 +- {{DOMxRef("Element.scrollTop")}} + - : この要素の上端が垂直方向にスクロールされた量をピクセル数で表す数値です。 +- {{DOMxRef("Element.scrollTopMax")}} {{Non-standard_Inline}} {{readOnlyInline}} + - : 要素で可能な上スクロールオフセットの最大値を表す数値を返します。 +- {{DOMxRef("Element.scrollWidth")}} {{readOnlyInline}} + - : 要素のスクロールビュー幅を表す数値を返します。 +- {{DOMxRef("Element.shadowRoot")}}{{readOnlyInline}} + - : 要素が所持しているオープンモードのシャドウルート、あるいはオープンモードのシャドウルートがない場合は null を返します。 +- {{DOMxRef("Element.openOrClosedShadowRoot")}} {{Non-standard_Inline}}{{readOnlyInline}} + - : オープン・クローズに関係なく、要素が所持しているさh同ルートを返します。**[WebExtensions](/ja/docs/Mozilla/Add-ons/WebExtensions) に限り使用できます。** +- {{DOMxRef("Element.setHTML")}} + - : HTML の文字列を解釈して[無害化](/ja/docs/Web/API/HTML_Sanitizer_API)し、 DOM の中にこの要素のサブツリーとして挿入します。 +- {{DOMxRef("Element.slot")}} {{Experimental_Inline}} + - : この要素が挿入されているシャドウ DOM スロットの名前を返します。 +- {{DOMxRef("Element.tagName")}} {{readOnlyInline}} + - : この要素のタグ名を文字列で返します。 + +### ARIA から導入されたプロパティ + +_`Element` インターフェイスには、 `ARIAMixin` ミックスインで定義されている以下のプロパティを持っています。_ + +- {{domxref("Element.ariaAtomic")}} + - : {{domxref("DOMString")}} で [`aria-atomic`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-atomic) 属性を反映し、 [`aria-relevant`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-relevant) 属性で定義された変更通知に基づいて、支援技術が変更された領域のすべてを提示するか、一部のみを提示するかを示します。 +- {{domxref("Element.ariaAutoComplete")}} + - : {{domxref("DOMString")}} で、 [`aria-autocomplete`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-autocomplete) 属性を反映し、コンボボックス、検索ボックス、テキストボックスでテキストを入力する際に、ユーザーの意図した値の 1 つ以上の予測を表示するかどうか、予測が行われた場合にはどのように表示するかを指定します。 +- {{domxref("Element.ariaBusy")}} + - : {{domxref("DOMString")}} で [`aria-busy`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-busy) 属性を反映し、要素が修正されているかどうかを示します。支援技術では、修正が完了するまで待ってからユーザーに公開したい場合があります。 +- {{domxref("Element.ariaChecked")}} + - : {{domxref("DOMString")}} で [`aria-checked`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-checked) 属性を反映し、チェックボックス、ラジオボタン、その他のチェック状態を持つウィジェットの現在の「チェック」状態を示します。 +- {{domxref("Element.ariaColCount")}} + - : {{domxref("DOMString")}} で [`aria-colcount`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-colcount) 属性を反映し、テーブル、グリッド、ツリーグリッドの列数を定義します。 +- {{domxref("Element.ariaColIndex")}} + - : {{domxref("DOMString")}} で [`aria-colindex`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-colindex) 属性を反映し、テーブル、グリッド、ツリーグリッド内の列の総数に対する要素の列インデックスまたは位置を定義します。 +- {{domxref("Element.ariaColIndexText")}} + - : {{domxref("DOMString")}} で [`aria-colindextext`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-colindextext) 属性を反映し、 aria-colindex の代替となる人間が読めるテキストを定義します。 +- {{domxref("Element.ariaColSpan")}} + - : {{domxref("DOMString")}} で [`aria-colspan`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-colspan) 属性を反映し、テーブル、グリッド、ツリーグリッド内のセルまたはグリッドセルがカバーする列数を定義します。 +- {{domxref("Element.ariaCurrent")}} + - : {{domxref("DOMString")}} で [`aria-current`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-current) 属性を反映し、コンテナーまたは関連要素のセット内の現在の項目を表す要素を示します。 +- {{domxref("Element.ariaDescription")}} + - : {{domxref("DOMString")}} で [`aria-description`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-description) 属性を反映し、現在の要素を説明または注釈する文字列値を定義します。 +- {{domxref("Element.ariaDisabled")}} + - : {{domxref("DOMString")}} で [`aria-disabled`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-disabled) 属性を反映し、この要素が知覚可能であるが無効であるため、編集やその他の操作ができないことを示します。 +- {{domxref("Element.ariaExpanded")}} + - : {{domxref("DOMString")}} で [`aria-expanded`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-expanded) 属性を反映し、この要素が所有または制御するグループ化要素が展開されているか畳まれているかを示します。 +- {{domxref("Element.ariaHasPopup")}} + - : {{domxref("DOMString")}} で [`aria-haspopup`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup) 属性を反映し、この要素によって引き起こされるメニューやダイアログのような対話型のポップアップ要素の有無と種類を示します。 +- {{domxref("Element.ariaHidden")}} + - : {{domxref("DOMString")}} で [`aria-hidden`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-hidden) 属性を反映し、この要素がアクセシビリティ API に公開されているかどうかを示します。 +- {{domxref("Element.ariaKeyShortcuts")}} + - : {{domxref("DOMString")}} で [`aria-keyshortcuts`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-keyshortcuts) 属性を反映し、要素を活性化したりフォーカスを与えたりするために作者が実装したキーボードショートカットを示します。 +- {{domxref("Element.ariaLabel")}} + - : {{domxref("DOMString")}} で [`aria-label`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-label) 属性を反映し、現在の要素をラベル付けする文字列値を定義します。 +- {{domxref("Element.ariaLevel")}} + - : {{domxref("DOMString")}} で [`aria-level`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-level) 属性を反映し、構造内の要素の階層レベルを定義します。 +- {{domxref("Element.ariaLive")}} + - : {{domxref("DOMString")}} で [`aria-live`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-live) 属性を反映し、この要素が更新されること、ユーザーエージェント、支援技術、ユーザーがライブ領域から期待できる更新の種類を記述します。 +- {{domxref("Element.ariaModal")}} + - : {{domxref("DOMString")}} で [`aria-modal`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-modal) 属性を反映し、要素が表示されたときにモーダルであるかどうかを示します。 +- {{domxref("Element.ariaMultiline")}} + - : {{domxref("DOMString")}} で [`aria-multiline`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-multiline) 属性を反映し、テキストボックスが複数行の入力を受け入れるか、一行のみを受け入れるかを示します。 +- {{domxref("Element.ariaMultiSelectable")}} + - : {{domxref("DOMString")}} で [`aria-multiselectable`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-multiselectable) 属性を反映し、ユーザーが現在の選択可能な子孫から複数の項目を選択できることを示します。 +- {{domxref("Element.ariaOrientation")}} + - : {{domxref("DOMString")}} で [`aria-orientation`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-orientation) 属性を反映し、要素の方向が水平、垂直、または不明/曖昧であることを示す。 +- {{domxref("Element.ariaPlaceholder")}} + - : {{domxref("DOMString")}} で [`aria-placeholder`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-placeholder) 属性を反映し、コントロールに値がない場合にユーザーのデータ入力を支援するための短いヒントを定義します。 +- {{domxref("Element.ariaPosInSet")}} + - : {{domxref("DOMString")}} で [`aria-posinset`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-posinset) 属性を反映し、リストアイテムまたはツリーアイテムの現在のセットにおける要素の数または位置を定義します。 +- {{domxref("Element.ariaPressed")}} + - : {{domxref("DOMString")}} で [`aria-pressed`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-pressed) 属性を反映し、トグルボタンの現在の「押された」状態を示します。 +- {{domxref("Element.ariaReadOnly")}} + - : {{domxref("DOMString")}} で [`aria-readonly`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-readonly) 属性を反映し、要素が編集不可能であることを示すが、それ以外は操作可能であることを示します。 +- {{domxref("Element.ariaRelevant")}} + - : {{domxref("DOMString")}} で [`aria-relevant`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-relevant) 属性を反映し、ライブリージョン内のアクセシビリティツリーが変更された場合に、ユーザエージェントがどのような通知を行うかを示します。これは、 `aria-live` リージョン内のどのような変更が関連性があり、アナウンスされるべきかを記述するために使用されます。 +- {{domxref("Element.ariaRequired")}} + - : {{domxref("DOMString")}} で [`aria-required`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-required) 属性を反映し、フォームを送信する前に要素にユーザーの入力が必要であることを示します。 +- {{domxref("Element.ariaRoleDescription")}} + - : {{domxref("DOMString")}} で [`aria-roledescription`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-roledescription) 属性を反映し、要素の役割について、人間が読める、著者がローカライズした説明を定義します。 +- {{domxref("Element.ariaRowCount")}} + - : {{domxref("DOMString")}} で [`aria-rowcount`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-rowcount) 属性を反映し、テーブル、グリッド、ツリーグリッドの行の総数を定義します。 +- {{domxref("Element.ariaRowIndex")}} + - : {{domxref("DOMString")}} で [`aria-rowindex`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-rowindex) 属性を反映し、テーブル、グリッド、ツリーグリッド内の行の総数に対する要素の行インデックスまたは位置を定義します。 +- {{domxref("Element.ariaRowIndexText")}} + - : {{domxref("DOMString")}} で [`aria-rowindextext`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-rowindextext) 属性を反映し、 aria-rowindex の代替となる人間が読めるテキストを定義しています。 +- {{domxref("Element.ariaRowSpan")}} + - : {{domxref("DOMString")}} で [`aria-rowspan`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-rowspan) 属性を反映し、テーブル、グリッド、ツリーグリッド内のセルまたはグリッドセルがカバーする行数を定義します。 +- {{domxref("Element.ariaSelected")}} + - : {{domxref("DOMString")}} で [`aria-selected`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-selected) 属性を反映し、選択状態を持つ要素の現在の「選択された」状態を示します。 +- {{domxref("Element.ariaSetSize")}} + - : {{domxref("DOMString")}} で [`aria-setsize`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-setsize) 属性を反映し、現在のリストアイテムまたはツリーアイテムのセットのアイテム数を定義します。 +- {{domxref("Element.ariaSort")}} + - : {{domxref("DOMString")}} で [`aria-sort`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-sort) 属性を反映し、テーブルやグリッドのアイテムが昇順または降順でソートされるかどうかを示します。 +- {{domxref("Element.ariaValueMax")}} + - : {{domxref("DOMString")}} で [`aria-valueMax`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-valuemax) 属性を反映し、 range ウィジェットの最大許容値を定義します。 +- {{domxref("Element.ariaValueMin")}} + - : {{domxref("DOMString")}} で [`aria-valueMin`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-valuemin) 属性を反映し、 range ウィジェットに許容される最小値を定義します。 +- {{domxref("Element.ariaValueNow")}} + - : {{domxref("DOMString")}} で [`aria-valueNow`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-valuenow) 属性を反映し、 range ウィジェットの現在の値を定義します。 +- {{domxref("Element.ariaValueText")}} + - : {{domxref("DOMString")}} で [`aria-valuetext`](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-valuetext) 属性を反映し、 range ウィジェットの aria-valuenow の代替となる人間が読めるテキストを定義します。 + +## メソッド + +_`Element` は親である {{DOMxRef("Node")}}、およびその親である {{DOMxRef("EventTarget")}} からメソッドを継承しています。_ + +- {{DOMxRef("EventTarget.addEventListener()")}} + - : この要素、特定のイベント型を扱うイベントハンドラーを登録します。 +- {{DOMxRef("Element.after()")}} + - : {{domxref("Node")}} または {{domxref("DOMString")}} オブジェクトをこの `Element` の親の子ノードリストの中、 `Element` の直後に追加します。 +- {{DOMxRef("Element.attachShadow()")}} + - : 指定した要素にシャドウ DOM ツリーを結びつけて、その {{DOMxRef("ShadowRoot")}} への参照を返します。 +- {{DOMxRef("Element.animate()")}} {{Experimental_Inline}} + - : この要素でアニメーションを作成および実行するためのショートカットメソッドです。作成した Animation オブジェクトのインスタンスを返します。 +- {{DOMxRef("Element.append()")}} + - : この要素の最後の子の後に、一連の {{domxref("Node")}} オブジェクトまたは {{domxref("DOMString")}} オブジェクトを挿入します。 +- {{DOMxRef("Element.before()")}} + - : {{domxref("Node")}} または {{domxref("DOMString")}} オブジェクトをこの `Element` の親の子ノードリストの中、 `Element` の直前に追加します。 +- {{DOMxRef("Element.closest()")}} + - : {{DOMxRef("Element")}} 型で、引数に指定したセレクターによって選択される要素がもっとも近い祖先要素(または当該要素自身)を返します。 +- {{DOMxRef("Element.createShadowRoot()")}} {{Non-standard_Inline}} {{Deprecated_Inline}} + - : この要素に[シャドウ DOM](/ja/docs/Web/Web_Components/Using_shadow_DOM) を作成し、シャドウホストにします。 {{DOMxRef("ShadowRoot")}} を返します。 +- {{DOMxRef("Element.computedStyleMap()")}} {{Experimental_Inline}} + - : {{DOMxRef("StylePropertyMapReadOnly")}} インターフェイスで、 {{DOMxRef("CSSStyleDeclaration")}} に代わる、CSS 宣言ブロックを読み取り専用で表現したものを返します。 +- {{DOMxRef("EventTarget.dispatchEvent()")}} + - : DOM 内のこのノードにイベントを送ります。そして、イベントをキャンセルしたハンドラーがないかを示す論理値を返します。 +- {{DOMxRef("Element.getAnimations()")}} {{Experimental_Inline}} + - : 要素でアクティブな Animation オブジェクトの配列を返します。 +- {{DOMxRef("Element.getAttribute()")}} + - : 現在ノードから指定された名前付きの属性値を取得して文字列で返します。 +- {{DOMxRef("Element.getAttributeNames()")}} + - : 現在の要素の属性名の配列を返します。 +- {{DOMxRef("Element.getAttributeNode()")}} + - : 現在のノードから、指定された属性のノード表現を取得し、 {{DOMxRef("Attr")}} として返します。 +- {{DOMxRef("Element.getAttributeNodeNS()")}} + - : 指定された名前と名前空間を持つ属性のノード表現を現在のノードから取得し、それを {{DOMxRef("Attr")}} として返します。 +- {{DOMxRef("Element.getAttributeNS()")}} + - : 現在のノードから指定された名前と名前空間を持つ属性値を取得して、文字列で返します。 +- {{DOMxRef("Element.getBoundingClientRect()")}} + - : この要素のサイズと、ビューポートにおける位置を返します。 +- {{domxref("Element.getBoxQuads()")}} {{experimental_inline}} + - : このノードの CSS フラグメントを表す {{domxref("DOMQuad")}} オブジェクトのリストを返します。 +- {{DOMxRef("Element.getClientRects()")}} + - : クライアント領域内のテキストの各行の外接矩形 (bounding rectangle) の集合を返します。 +- {{DOMxRef("Element.getElementsByClassName()")}} + - : 生きた {{DOMxRef("HTMLCollection")}} で、現在の要素から、引数に指定したクラス名のリストに該当するすべての子孫要素を生きた {{DOMxRef("HTMLCollection")}} で、返します。 +- {{DOMxRef("Element.getElementsByTagName()")}} + - : 現在要素から、特定のタグ名を持つすべての子孫要素の集合を取得して生きた {{DOMxRef("HTMLCollection")}} で返します。 +- {{DOMxRef("Element.getElementsByTagNameNS()")}} + - : 生きた {{DOMxRef("HTMLCollection")}} で、現在要素から、特定のタグ名と名前空間を持つすべての子孫要素の集合を取得して、生きた {{DOMxRef("HTMLCollection")}} で返します。 +- {{DOMxRef("Element.hasAttribute()")}} + - : 要素が指定された指定された属性を持っているか否かを示す論理値を返します。 +- {{DOMxRef("Element.hasAttributeNS()")}} + - : 要素が指定された名前空間内に指定された属性を持っているか否かを示す論理値を返します。 +- {{DOMxRef("Element.hasAttributes()")}} + - : 要素が現在 1 つ以上の属性をもっているかを示す論理値を返します。 +- {{DOMxRef("Element.hasPointerCapture()")}} + - : 呼び出された要素が、指定されたポインター ID によって識別されるポインターのポインターキャプチャを持っているかどうかを示します。 +- {{DOMxRef("Element.insertAdjacentElement()")}} + - : メソッドを実行した要素に対して相対的な指定位置に、要素ノードを挿入します。 +- {{DOMxRef("Element.insertAdjacentHTML()")}} + - : テキストを HTML または XML として解釈し、解釈結果のノードをツリーの指定した位置に挿入します。 +- {{DOMxRef("Element.insertAdjacentText()")}} + - : メソッドを実行した要素に対して相対的な指定位置に、テキストノードを挿入します。 +- {{DOMxRef("Element.matches()")}} + - : 要素が指定されたセレクター文字列で選択されるか否かを示す論理値を返します。 +- {{DOMxRef("Element.prepend()")}} + - : この要素の最初の子の前に、一連の {{domxref("Node")}} オブジェクトまたは {{domxref("DOMString")}} オブジェクトを挿入します。 +- {{DOMxRef("Element.querySelector()")}} + - : 要素に対して、指定したセレクターに一致する最初の {{DOMxRef("Node")}} を返します。 +- {{DOMxRef("Element.querySelectorAll()")}} + - : 要素に対して、指定したセレクターに一致するノードの {{DOMxRef("NodeList")}} を返します。 +- {{DOMxRef("Element.releasePointerCapture()")}} + - : 以前に特定の{{DOMxRef("PointerEvent","ポインターイベント")}}向けに設定したポインターキャプチャーを解放 (停止) します。 +- {{DOMxRef("Element.remove()")}} + - : 親要素の子リストから、要素を取り除きます。 +- {{DOMxRef("Element.removeAttribute()")}} + - : 現在ノードから,指定された名前を持つ属性を取り除きます。 +- {{DOMxRef("Element.removeAttributeNode()")}} + - : 現在のノードから名前の付いた属性のノード表現を取り除きます。 +- {{DOMxRef("Element.removeAttributeNS()")}} + - : 現在ノードから,指定された名前と名前空間を持つ属性を取り除きます。 +- {{DOMxRef("EventTarget.removeEventListener()")}} + - : 要素からイベントリスナーを取り除きます。 +- {{DOMxRef("Element.replaceChildren()")}} + - : {{domxref("Node")}} の既存の子を指定された新しい一連の子に置き換えます。 +- {{DOMxRef("Element.replaceWith()")}} + - : 親の子リストの要素を、一連の {{domxref("Node")}} または {{domxref("DOMString")}} オブジェクトで置き換えます。 +- {{DOMxRef("Element.requestFullscreen()")}} {{Experimental_Inline}} + - : 要素を全画面表示するよう、ブラウザーへ非同期的に要求します。 +- {{DOMxRef("Element.requestPointerLock()")}} {{Experimental_Inline}} + - : 指定した要素でポインターをロックするよう、非同期的に要求できます。 +- {{domxref("Element.scroll()")}} + - : 指定された要素の中で特定の座標のセットへスクロールします。 +- {{domxref("Element.scrollBy()")}} + - : 指定された量だけ要素をスクロールします。 +- {{DOMxRef("Element.scrollIntoView()")}} {{Experimental_Inline}} + - : 要素がビューの内側に来るまでページをスクロールします。 +- {{domxref("Element.scrollTo()")}} + - : 指定された要素の中で特定の座標のセットへスクロールします。 +- {{DOMxRef("Element.setAttribute()")}} + - : 現在ノードに、指定された名前を持つ属性値を設定します。 +- {{DOMxRef("Element.setAttributeNode()")}} + - : 現在のノードから指定された属性のノード表現を設定します。 +- {{DOMxRef("Element.setAttributeNodeNS()")}} + - : 指定された名前と名前空間を持つ属性のノード表現を、現在のノードから設定します。 +- {{DOMxRef("Element.setAttributeNS()")}} + - : 現在ノードに、指定された名前と名前空間を持つ属性値を設定します。 +- {{DOMxRef("Element.setCapture()")}} {{Non-standard_Inline}}{{Deprecated_Inline}} + - : マウスイベントキャプチャーを設定し、すべてのマウスイベントをこの要素にリダイレクトします。 +- {{DOMxRef("Element.setPointerCapture()")}} + - : 指定された要素を、以降の[ポインターイベント](/ja/docs/Web/API/Pointer_events)のキャプチャー対象として指定します。 +- {{DOMxRef("Element.toggleAttribute()")}} + - : 論理属性のオンオフを切り替えます。属性が存在していれば削除、属性が存在していなければ追加します。 + +## イベント + +これらのイベントを待ち受けするには、 `addEventListener()` を使用するか、イベントリスナーをこのインターフェイスの `onイベント名` プロパティに代入するかします。 + +- {{domxref("HTMLDialogElement/cancel_event", "cancel")}} + + - : ユーザーがブラウザーに、現在開いているダイアログを閉じたいと指示したときに {{HTMLElement("dialog")}} に発行されます。ブラウザーがこのイベントを発行させる可能性があるのは、例えばユーザーが Esc キーを押したり、ブラウザーの UI の一部である「ダイアログを閉じる」ボタンをクリックしたりした場合です。 {{domxref("GlobalEventHandlers/oncancel", "oncancel")}} プロパティからも利用できます。 +- {{domxref("Element/error_event", "error")}} + - : リソースの読み込みに失敗したか、利用できなかった場合に発行されます。例えば、スクリプトに実行エラーがあった場合や、画像が見つからなかった場合、無効であった場合などです。 + {{domxref("GlobalEventHandlers/onerror", "onerror")}} プロパティからも利用できます。 +- {{domxref("Element/scroll_event", "scroll")}} + - : 文書のビューまたは要素がスクロールしたときに発行されます。 + {{DOMxRef("GlobalEventHandlers.onscroll", "onscroll")}} プロパティからも利用できます。 +- {{domxref("Element/select_event", "select")}} + - : いくらかのテキストが選択されたときに発行されます。 + {{DOMxRef("GlobalEventHandlers.onselect", "onselect")}} プロパティからも利用できます。 +- {{domxref("Element/show_event", "show")}} + - : {{domxref("Element/contextmenu_event", "contextmenu")}} イベントが [`contextmenu`](/ja/docs/Web/HTML/Global_attributes/contextmenu) 属性 {{deprecated_inline}} を持つ要素で発生したか、バブリングで到達した場合に発行されます。 + {{DOMxRef("GlobalEventHandlers.onshow", "onshow")}} プロパティからも利用できます。 +- {{domxref("Element/wheel_event","wheel")}} + - : ユーザーがポインティングデバイス(普通はマウス)のホイールボタンを回転させたときに発行されます。 + {{DOMxRef("GlobalEventHandlers.onwheel", "onwheel")}} プロパティからも利用できます。 +- {{domxref("Element/securitypolicyviolation_event","securitypolicyviolation")}} + - : [コンテンツセキュリティポリシー](/ja/docs/Web/HTTP/CSP)の違反があった場合に発行されます。 + グローバルの {{DOMxRef("GlobalEventHandlers.onsecuritypolicyviolation", "onsecuritypolicyviolation")}} プロパティからも利用できます。これは要素と {{domxref("Document")}} と {{domxref("Window")}} の各オブジェクトで利用できます。 + +### クリップボードイベント + +- {{domxref("Element/copy_event", "copy")}} + - : ユーザーがブラウザーのユーザーインターフェイスを通して、コピー操作を行ったときに発行されます。 + {{domxref("HTMLElement/oncopy", "oncopy")}} プロパティからも利用できます。 +- {{domxref("Element/cut_event", "cut")}} + - : ユーザーがブラウザーのユーザーインターフェイスを通して、切り取り操作を行ったときに発行されます。 + {{domxref("HTMLElement/oncut", "oncut")}} プロパティからも利用できます。 +- {{domxref("Element/paste_event", "paste")}} + - : ユーザーがブラウザーのユーザーインターフェイスを通して、貼り付け操作を行ったときに発行されます。 + {{domxref("HTMLElement/onpaste", "onpaste")}} プロパティからも利用できます。 + +### 構成イベント + +- {{domxref("Element/compositionend_event", "compositionend")}} + - : {{glossary("input method editor", "インプットメソッドエディター")}}のようなテキスト構成システムで、現在の入力セッションが完了またはキャンセルされたときに発行されます。 +- {{domxref("Element/compositionstart_event", "compositionstart")}} + - : {{glossary("input method editor", "インプットメソッドエディター")}}のようなテキスト構成システムで、新しい入力セッションを始まったときに発行されます。 +- {{domxref("Element/compositionupdate_event", "compositionupdate")}} + - : {{glossary("input method editor", "インプットメソッドエディター")}}のようなテキスト構成システムによって制御されている入力セッションのコンテキストに、新しい文字が入力されたときに発行されます。 + +### フォーカスイベント + +- {{domxref("Element/blur_event", "blur")}} + - : 要素がフォーカスを失ったときに発行されます。 + {{domxref("GlobalEventHandlers/onblur", "onblur")}} プロパティからも利用できます。 +- {{domxref("Element/focus_event", "focus")}} + - : 要素がフォーカスを受け取ったときに発行されます。 + {{domxref("GlobalEventHandlers/onfocus", "onfocus")}} プロパティからも利用できます。 +- {{domxref("Element/focusin_event", "focusin")}} + - : 要素がフォーカスを受け取ろうとしているときに発行されます。 +- {{domxref("Element/focusout_event", "focusout")}} + - : 要素がフォーカスを失おうとしているときに発行されます。 + +### 全画面イベント + +- {{domxref("Element/fullscreenchange_event", "fullscreenchange")}} + - : [全画面](/ja/docs/Web/API/Fullscreen_API/Guide)モードへの移行時または終了時に、 {{domxref("Element")}} に送られます。 +- {{domxref("Element/fullscreenerror_event", "fullscreenerror")}} + - : [全画面](/ja/docs/Web/API/Fullscreen_API/Guide)モードへの移行または終了を試みている中でエラーが発生したときに、 `Element` に送られます。 + +### キーボードイベント + +- `{{domxref("Element/keydown_event", "keydown")}}` + - : キーが押されたときに発行されます。 + {{domxref("GlobalEventHandlers/onkeydown", "onkeydown")}} プロパティからも利用できます。 +- `{{domxref("Element/keypress_event", "keypress")}}` + - : 文字の値を発行させるキーが押されたときに発行されます。 {{deprecated_inline}} + {{domxref("GlobalEventHandlers/onkeypress", "onkeypress")}} プロパティからも利用できます。 +- `{{domxref("Element/keyup_event", "keyup")}}` + - : キーが離されたときに発行されます。 + {{domxref("GlobalEventHandlers/onkeyup", "onkeyup")}} プロパティからも利用できます。 + +### マウスイベント + +- {{domxref("Element/auxclick_event", "auxclick")}} + - : ポインティングデバイスの第一ボタン以外のボタン(例えば、マウスの左ボタン以外のボタン)が要素上で押されて離されたときに発行されます。 + {{domxref("GlobalEventHandlers/onauxclick", "onauxclick")}} プロパティからも利用できます。 +- {{domxref("Element/click_event", "click")}} + - : ポインティングデバイスのボタン(例えば、マウスの第一ボタン)が単一の要素上で押されて離されたときに発行されます。 + {{domxref("GlobalEventHandlers/onclick", "onclick")}} プロパティからも利用できます。 +- {{domxref("Element/contextmenu_event", "contextmenu")}} + - : ユーザーがコンテキストメニューを開こうとしたときに発行されます。 + {{domxref("GlobalEventHandlers/oncontextmenu", "oncontextmenu")}} プロパティからも利用できます。 +- {{domxref("Element/dblclick_event", "dblclick")}} + - : ポインティングデバイスのボタン(例えば、マウスの第一ボタン)が単一の要素上で 2 回クリックされたときに発行されます。 + {{domxref("GlobalEventHandlers/ondblclick", "ondblclick")}} プロパティからも利用できます。 +- {{domxref("Element/DOMActivate_event", "DOMActivate")}} {{Deprecated_Inline}} + - : 要素が、例えばマウスのクリックやキーの押下によってアクティブになったときに発行されます。 +- {{domxref("Element/mousedown_event", "mousedown")}} + - : ポインティングデバイスのボタンが要素上で押されたときに発行されます。 + {{domxref("GlobalEventHandlers/onmousedown", "onmousedown")}} プロパティからも利用できます。 +- {{domxref("Element/mouseenter_event", "mouseenter")}} + - : ポインティングデバイス(ふつうはマウス)が、リスナーが割り当てられた要素の上へ移動したときに発行されます。 + {{domxref("GlobalEventHandlers/onmouseenter", "onmouseenter")}} プロパティからも利用できます。 +- {{domxref("Element/mouseleave_event", "mouseleave")}} + - : ポインティングデバイス(ふつうはマウス)が、リスナーが割り当てられた要素の外へ移動したときに発行されます。 + {{domxref("GlobalEventHandlers/onmouseleave", "onmouseleave")}} プロパティからも利用できます。 +- {{domxref("Element/mousemove_event", "mousemove")}} + - : ポインティングデバイス(ふつうはマウス)が、要素の上を移動したときに発行されます。 + {{domxref("GlobalEventHandlers/onmousemove", "onmousemove")}} プロパティからも利用できます。 +- {{domxref("Element/mouseout_event", "mouseout")}} + - : ポインティングデバイス(ふつうはマウス)が、リスナーが割り当てられた要素またはその子要素の外へ移動したときに発行されます。 + {{domxref("GlobalEventHandlers/onmouseout", "onmouseout")}} プロパティからも利用できます。 +- {{domxref("Element/mouseover_event", "mouseover")}} + - : ポインティングデバイス(ふつうはマウス)が、リスナーが割り当てられた要素またはその子要素の上を移動したときに発行されます。 + {{domxref("GlobalEventHandlers/onmouseover", "onmouseover")}} プロパティからも利用できます。 +- {{domxref("Element/mouseup_event", "mouseup")}} + - : ポインティングデバイスのボタンが要素の上で離されたときに発行されます。 + {{domxref("GlobalEventHandlers/onmouseup", "onmouseup")}} プロパティからも利用できます。 +- {{domxref("Element/webkitmouseforcechanged_event", "webkitmouseforcechanged")}} + - : trackpadtouchscreen の上の圧力が変化するたびに発行されます。 +- {{domxref("Element/webkitmouseforcedown_event", "webkitmouseforcedown")}} + - : 「強制クリック」と判断されるのに十分な圧力があった直後の mousedown イベントの後で発行されます。 +- {{domxref("Element/webkitmouseforcewillbegin_event", "webkitmouseforcewillbegin")}} + - : {{domxref("Element/mousedown_event", "mousedown")}} イベントの前に発行されます。 +- {{domxref("Element/webkitmouseforceup_event", "webkitmouseforceup")}} + - : 「強制クリック」が終了したといえるほど圧力が減少した直後の {{domxref("Element/webkitmouseforcedown_event", "webkitmouseforcedown")}} イベントの後で発行されます。 + +### タッチイベント + +- {{domxref("Element/touchcancel_event", "touchcancel")}} + - : 1 つ以上のタッチ点が実装依存の理由により破棄された(例えば、タッチ点が多く作られすぎた)場合に発行されます。 + {{domxref("GlobalEventHandlers/ontouchcancel", "ontouchcancel")}} プロパティからも利用できます。 +- {{domxref("Element/touchend_event", "touchend")}} + - : 1 つ以上のタッチ点がタッチ面から取り除かれたときに発行されます。 + {{domxref("GlobalEventHandlers/ontouchend", "ontouchend")}} プロパティからも利用できます。 +- {{domxref("Element/touchmove_event", "touchmove")}} + - : 1 つ以上のタッチ点がタッチ面上で移動したときに発行されます。 + {{domxref("GlobalEventHandlers/ontouchmove", "ontouchmove")}} プロパティからも利用できます。 +- {{domxref("Element/touchstart_event", "touchstart")}} + - : 1 つ以上のタッチ点がタッチ面に配置されたときに発行されます。 + {{domxref("GlobalEventHandlers/ontouchstart", "ontouchstart")}} プロパティからも利用できます。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} -- cgit v1.2.3-54-g00ecf From d53bae971e455859229bcb3246e29bcbc85179d2 Mon Sep 17 00:00:00 2001 From: MDN Date: Tue, 8 Mar 2022 00:12:08 +0000 Subject: [CRON] sync translated content --- files/es/_redirects.txt | 1 + files/es/_wikihistory.json | 2 +- .../javascript/asynchronous/concepts/index.html | 162 ------ .../javascript/asynchronous/introducing/index.html | 163 ++++++ files/fr/_redirects.txt | 5 + .../learn/javascript/asynchronous/index.md | 440 ++++++++++++++ .../javascript/asynchronous/introducing/index.md | 168 ++++++ .../javascript/asynchronous/promises/index.md | 595 +++++++++++++++++++ .../index.md | 648 +++++++++++++++++++++ .../resourcetimingbufferfull_event/index.md | 60 ++ .../javascript/asynchronous/async_await/index.md | 594 ------------------- .../choosing_the_right_approach/index.md | 439 -------------- .../javascript/asynchronous/concepts/index.md | 167 ------ .../asynchronous/timeouts_and_intervals/index.md | 647 -------------------- .../onresourcetimingbufferfull/index.md | 59 -- files/ja/_redirects.txt | 5 +- files/ja/_wikihistory.json | 28 +- .../resourcetimingbufferfull_event/index.md | 59 ++ .../web/api/window/appinstalled_event/index.html | 58 ++ .../javascript/asynchronous/concepts/index.html | 162 ------ .../javascript/asynchronous/introducing/index.html | 163 ++++++ .../onresourcetimingbufferfull/index.md | 58 -- files/ja/web/api/window/onappinstalled/index.html | 58 -- files/ko/_redirects.txt | 3 + files/ko/_wikihistory.json | 44 +- .../learn/javascript/asynchronous/index.html | 599 +++++++++++++++++++ .../javascript/asynchronous/introducing/index.html | 160 +++++ .../javascript/asynchronous/promises/index.html | 414 +++++++++++++ .../javascript/asynchronous/async_await/index.html | 413 ------------- .../javascript/asynchronous/concepts/index.html | 159 ----- .../asynchronous/timeouts_and_intervals/index.html | 598 ------------------- files/pt-br/_redirects.txt | 8 +- files/pt-br/_wikihistory.json | 40 +- .../learn/javascript/asynchronous/index.html | 524 +++++++++++++++++ .../javascript/asynchronous/introducing/index.html | 156 +++++ .../javascript/asynchronous/promises/index.html | 556 ++++++++++++++++++ .../index.html | 625 ++++++++++++++++++++ .../javascript/asynchronous/async_await/index.html | 556 ------------------ .../choosing_the_right_approach/index.html | 524 ----------------- .../javascript/asynchronous/concepts/index.html | 156 ----- .../asynchronous/timeouts_and_intervals/index.html | 624 -------------------- files/ru/_redirects.txt | 5 +- files/ru/_wikihistory.json | 36 +- .../learn/javascript/asynchronous/index.html | 639 ++++++++++++++++++++ .../javascript/asynchronous/introducing/index.html | 165 ++++++ .../javascript/asynchronous/async_await/index.html | 415 ------------- .../javascript/asynchronous/concepts/index.html | 164 ------ .../javascript/asynchronous/promises/index.html | 416 +++++++++++++ .../asynchronous/timeouts_and_intervals/index.html | 639 -------------------- files/zh-cn/_redirects.txt | 15 +- files/zh-cn/_wikihistory.json | 128 ++-- .../learn/javascript/asynchronous/index.html | 524 +++++++++++++++++ .../javascript/asynchronous/introducing/index.html | 163 ++++++ .../javascript/asynchronous/promises/index.html | 380 ++++++++++++ .../index.html | 618 ++++++++++++++++++++ .../api/document/visibilitychange_event/index.html | 54 ++ .../javascript/asynchronous/async_await/index.html | 380 ------------ .../choosing_the_right_approach/index.html | 524 ----------------- .../javascript/asynchronous/concepts/index.html | 163 ------ .../asynchronous/timeouts_and_intervals/index.html | 618 -------------------- .../web/api/document/onvisibilitychange/index.html | 53 -- .../onresourcetimingbufferfull/index.html | 64 -- .../resourcetimingbufferfull_event/index.html | 65 +++ .../web/api/window/appinstalled_event/index.html | 49 ++ .../zh-cn/web/api/window/onappinstalled/index.html | 48 -- files/zh-tw/_redirects.txt | 4 + .../learn/javascript/asynchronous/index.html | 537 +++++++++++++++++ .../javascript/asynchronous/introducing/index.html | 170 ++++++ .../javascript/asynchronous/promises/index.html | 436 ++++++++++++++ .../index.html | 647 ++++++++++++++++++++ .../javascript/asynchronous/async_await/index.html | 435 -------------- .../choosing_the_right_approach/index.html | 536 ----------------- .../javascript/asynchronous/concepts/index.html | 169 ------ .../asynchronous/timeouts_and_intervals/index.html | 646 -------------------- 74 files changed, 10428 insertions(+), 10377 deletions(-) delete mode 100644 files/es/learn/javascript/asynchronous/concepts/index.html create mode 100644 files/es/learn/javascript/asynchronous/introducing/index.html create mode 100644 files/fr/conflicting/learn/javascript/asynchronous/index.md create mode 100644 files/fr/conflicting/learn/javascript/asynchronous/introducing/index.md create mode 100644 files/fr/conflicting/learn/javascript/asynchronous/promises/index.md create mode 100644 files/fr/conflicting/learn/javascript/asynchronous_ae5a561b0ec11fc53c167201aa8af5df/index.md create mode 100644 files/fr/conflicting/web/api/performance/resourcetimingbufferfull_event/index.md delete mode 100644 files/fr/learn/javascript/asynchronous/async_await/index.md delete mode 100644 files/fr/learn/javascript/asynchronous/choosing_the_right_approach/index.md delete mode 100644 files/fr/learn/javascript/asynchronous/concepts/index.md delete mode 100644 files/fr/learn/javascript/asynchronous/timeouts_and_intervals/index.md delete mode 100644 files/fr/web/api/performance/onresourcetimingbufferfull/index.md create mode 100644 files/ja/conflicting/web/api/performance/resourcetimingbufferfull_event/index.md create mode 100644 files/ja/conflicting/web/api/window/appinstalled_event/index.html delete mode 100644 files/ja/learn/javascript/asynchronous/concepts/index.html create mode 100644 files/ja/learn/javascript/asynchronous/introducing/index.html delete mode 100644 files/ja/web/api/performance/onresourcetimingbufferfull/index.md delete mode 100644 files/ja/web/api/window/onappinstalled/index.html create mode 100644 files/ko/conflicting/learn/javascript/asynchronous/index.html create mode 100644 files/ko/conflicting/learn/javascript/asynchronous/introducing/index.html create mode 100644 files/ko/conflicting/learn/javascript/asynchronous/promises/index.html delete mode 100644 files/ko/learn/javascript/asynchronous/async_await/index.html delete mode 100644 files/ko/learn/javascript/asynchronous/concepts/index.html delete mode 100644 files/ko/learn/javascript/asynchronous/timeouts_and_intervals/index.html create mode 100644 files/pt-br/conflicting/learn/javascript/asynchronous/index.html create mode 100644 files/pt-br/conflicting/learn/javascript/asynchronous/introducing/index.html create mode 100644 files/pt-br/conflicting/learn/javascript/asynchronous/promises/index.html create mode 100644 files/pt-br/conflicting/learn/javascript/asynchronous_ae5a561b0ec11fc53c167201aa8af5df/index.html delete mode 100644 files/pt-br/learn/javascript/asynchronous/async_await/index.html delete mode 100644 files/pt-br/learn/javascript/asynchronous/choosing_the_right_approach/index.html delete mode 100644 files/pt-br/learn/javascript/asynchronous/concepts/index.html delete mode 100644 files/pt-br/learn/javascript/asynchronous/timeouts_and_intervals/index.html create mode 100644 files/ru/conflicting/learn/javascript/asynchronous/index.html create mode 100644 files/ru/conflicting/learn/javascript/asynchronous/introducing/index.html delete mode 100644 files/ru/learn/javascript/asynchronous/async_await/index.html delete mode 100644 files/ru/learn/javascript/asynchronous/concepts/index.html create mode 100644 files/ru/learn/javascript/asynchronous/promises/index.html delete mode 100644 files/ru/learn/javascript/asynchronous/timeouts_and_intervals/index.html create mode 100644 files/zh-cn/conflicting/learn/javascript/asynchronous/index.html create mode 100644 files/zh-cn/conflicting/learn/javascript/asynchronous/introducing/index.html create mode 100644 files/zh-cn/conflicting/learn/javascript/asynchronous/promises/index.html create mode 100644 files/zh-cn/conflicting/learn/javascript/asynchronous_ae5a561b0ec11fc53c167201aa8af5df/index.html create mode 100644 files/zh-cn/conflicting/web/api/document/visibilitychange_event/index.html delete mode 100644 files/zh-cn/learn/javascript/asynchronous/async_await/index.html delete mode 100644 files/zh-cn/learn/javascript/asynchronous/choosing_the_right_approach/index.html delete mode 100644 files/zh-cn/learn/javascript/asynchronous/concepts/index.html delete mode 100644 files/zh-cn/learn/javascript/asynchronous/timeouts_and_intervals/index.html delete mode 100644 files/zh-cn/web/api/document/onvisibilitychange/index.html delete mode 100644 files/zh-cn/web/api/performance/onresourcetimingbufferfull/index.html create mode 100644 files/zh-cn/web/api/performance/resourcetimingbufferfull_event/index.html create mode 100644 files/zh-cn/web/api/window/appinstalled_event/index.html delete mode 100644 files/zh-cn/web/api/window/onappinstalled/index.html create mode 100644 files/zh-tw/conflicting/learn/javascript/asynchronous/index.html create mode 100644 files/zh-tw/conflicting/learn/javascript/asynchronous/introducing/index.html create mode 100644 files/zh-tw/conflicting/learn/javascript/asynchronous/promises/index.html create mode 100644 files/zh-tw/conflicting/learn/javascript/asynchronous_ae5a561b0ec11fc53c167201aa8af5df/index.html delete mode 100644 files/zh-tw/learn/javascript/asynchronous/async_await/index.html delete mode 100644 files/zh-tw/learn/javascript/asynchronous/choosing_the_right_approach/index.html delete mode 100644 files/zh-tw/learn/javascript/asynchronous/concepts/index.html delete mode 100644 files/zh-tw/learn/javascript/asynchronous/timeouts_and_intervals/index.html (limited to 'files/ja') diff --git a/files/es/_redirects.txt b/files/es/_redirects.txt index 0216d3ebb5..f62d9cc572 100644 --- a/files/es/_redirects.txt +++ b/files/es/_redirects.txt @@ -1179,6 +1179,7 @@ /es/docs/Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks /es/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks /es/docs/Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks/React_getting_started /es/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started /es/docs/Learn/Herramientas_y_pruebas/Understanding_client-side_tools /es/docs/Learn/Tools_and_testing/Understanding_client-side_tools +/es/docs/Learn/JavaScript/Asynchronous/Concepts /es/docs/Learn/JavaScript/Asynchronous/Introducing /es/docs/Learn/JavaScript/Building_blocks/Bucle_codigo /es/docs/Learn/JavaScript/Building_blocks/Looping_code /es/docs/Learn/JavaScript/Building_blocks/Construyendo_tu_propia_funcion /es/docs/Learn/JavaScript/Building_blocks/Build_your_own_function /es/docs/Learn/JavaScript/Client-side_web_APIs/Introducción /es/docs/Learn/JavaScript/Client-side_web_APIs/Introduction diff --git a/files/es/_wikihistory.json b/files/es/_wikihistory.json index 6466283b7a..6156c5aff5 100644 --- a/files/es/_wikihistory.json +++ b/files/es/_wikihistory.json @@ -2943,7 +2943,7 @@ "madmaxdios" ] }, - "Learn/JavaScript/Asynchronous/Concepts": { + "Learn/JavaScript/Asynchronous/Introducing": { "modified": "2020-11-19T20:30:13.091Z", "contributors": [ "AndresSalomon1990", diff --git a/files/es/learn/javascript/asynchronous/concepts/index.html b/files/es/learn/javascript/asynchronous/concepts/index.html deleted file mode 100644 index d5babeb8ba..0000000000 --- a/files/es/learn/javascript/asynchronous/concepts/index.html +++ /dev/null @@ -1,162 +0,0 @@ ---- -title: General asynchronous programming concepts -slug: Learn/JavaScript/Asynchronous/Concepts -tags: - - Aprender - - Hilos - - JavaScript - - Promesas - - Threads - - bloques -translation_of: Learn/JavaScript/Asynchronous/Concepts ---- -
              {{LearnSidebar}}{{NextMenu("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous")}}
              - -

              En este artículo, repasaremos una serie de conceptos importantes relacionados con la programación asincrónica y cómo se ve esto en los navegadores web y JavaScript. Debe comprender estos conceptos antes de trabajar con los demás artículos del módulo.

              - - - - - - - - - - - - -
              Pre-requisitos:Literatura básica de computadora, un razonable entendimiento de los fundamentos de JavaScript.
              Objetivo:Entender los conceptos básicos detrás de la programación asincrónica, y cómo se manifiesta en los exploradores web y JavaScript.
              - -

              ¿Asincrónico?

              - -

              Normalmente, el código de un programa determinado se ejecuta directamente, y solo sucede una cosa a la vez. Si una función se basa en el resultado de otra función, tiene que esperar a que la otra función termine y regrese, y hasta que eso suceda, todo el programa se detiene esencialmente desde la perspectiva del usuario.

              - -

              Los usuarios de Mac, por ejemplo, a veces experimentan esto como un cursor giratorio multicolor (o "beachball" - "bola de playa" - como es llamado frecuentemente). Este cursor es la manera que tiene el sistema operativo de decir "el actual programa que está usando tiene que parar y esperar que algo termine, y está tomando tanto tiempo que me preocupa que pienses qué está sucediendo."

              - -

              Multi-colored macOS beachball busy spinner

              - -

              Esto es una experiencia frustrante y no es un buen uso del poder de procesamiento de una computadora - especialmente en una era donde las computadoras tienen múltiples procesadores disponibles. No tiene sentido sentarse allí a esperar algo cuando podrías dejar que la otra tarea se ejecute en otro procesador y le notifique cuando termine. Mientras tanto, esto le permitiría terminar otros trabajos, lo cual es la base de la programación asincrónica. Depende del entorno de programación que esté usando (exploradores web, en caso de desarrollo web) proveer de APIs que le permitan ejecutar dichas tareas de manera asincrónica.

              - -

              Código de bloqueo (Blocking)

              - -

              Las técnicas asincrónicas son muy útiles, particularmente en programación web. Cuando una app web se ejecuta en el navegador y ejecuta un gran bloque de código sin retornar el control al navegador, este mismo puede parecer que se congela. Esto es llamado blocking; el navegador es bloqueado para que el usuario pueda seguir interactuando y realizando otras tareas hasta que la app web retorne el control sobre el procesador.

              - -

              Vamos a ver algunos ejemplos que muestren lo que significa blocking.

              - -

              En nuestro ejemplo simple-sync.html (véalo en vivo), agregamos un detector del evento click ("click event listener") a un botón con el fin de que cuando sea clickeado, ejecute una operación de un gran consumo de tiempo (calcula 10 millones de fechas y luego muestra la última en la consola) y luego agrega un párrafo al DOM:

              - -
              const btn = document.querySelector('button');
              -btn.addEventListener('click', () => {
              -  let myDate;
              -  for(let i = 0; i < 10000000; i++) {
              -    let date = new Date();
              -    myDate = date
              -  }
              -
              -  console.log(myDate);
              -
              -  let pElem = document.createElement('p');
              -  pElem.textContent = 'This is a newly-added paragraph.';
              -  document.body.appendChild(pElem);
              -});
              - -

              Cuando ejecute el ejemplo, abra su consola de JavaScript y haga click en el botón — notará que el párrafo no aparece hasta que las fechas hayan sido calculadas en su totalidad y el mensaje en la consola haya sido logueado. EL código se ejecuta en el orden en que aparece (de arriba hacia abajo), y la última operación no se ejecuta hasta que la anterior haya terminado.

              - -
              -

              Nota: El ejemplo anterior es poco realista. ¡Nunca se van a calcular 10 millones de fechas en una app web real! Sin embargo, sirve para dar una idea básica.

              -
              - -

              En nuestro segundo ejemplo, simple-sync-ui-blocking.html (véalo en vivo), se simula algo un poco más realista con el que se puede encontrar en una página real. Se bloquea la interacción del usuario con la carga ("rendering") de la UI. En este ejemplo, se tienen dos botones:

              - -
                -
              • Un botón "Fill canvas" que cuando es clickeado llena con 1 millón de círculos azules al {{htmlelement("canvas")}} disponible.
              • -
              • Un botón "Click me for alert" que cuando es clickeado muestra un mensaje de alerta.
              • -
              - -
              function expensiveOperation() {
              -  for(let i = 0; i < 1000000; i++) {
              -    ctx.fillStyle = 'rgba(0,0,255, 0.2)';
              -    ctx.beginPath();
              -    ctx.arc(random(0, canvas.width), random(0, canvas.height), 10, degToRad(0), degToRad(360), false);
              -    ctx.fill()
              -  }
              -}
              -
              -fillBtn.addEventListener('click', expensiveOperation);
              -
              -alertBtn.addEventListener('click', () =>
              -  alert('You clicked me!')
              -);
              - -

              Si se clickea el primer botón y rápidamente se clickea el segundo, se verá que la alerta no aparece hasta que los círculos hayan terminado de representarse. La primer operación blockea a la segunda hasta que esta haya terminado de ejecutarse.

              - -
              -

              Nota: OK, nuestro caso es feo y estamos fingiendo el efecto de bloqueo, pero es un problema común con el que los desarrolladores de aplicaciones reales batallan todo el tiempo.

              -
              - -

              ¿Por qué es esto? La respuesta es porque JavaScript, en general, es de "un solo hilo" (single-threaded). En este punto, se tiene que introduce el concepto de "hilos" (threads).

              - -

              Threads

              - -

              Un hilo (thread) es básicamente un proceso simple que un programa puede usar para completar tareas ("tasks"). Cada hilo solo puede realizar una tarea a la vez:

              - -
              Task A --> Task B --> Task C
              - -

              Cada tarea se va a ejecutar secuencialmente; una tarea tiene que completarse antes de que la próxima empiece.

              - -

              Como se dijo previamente, muchas computadores actualmente tienen múltiples procesadores, por lo que pueden realizar múltiples tareas a la vez. Los lenguajes de programación que pueden manejar múltiples hilos pueden usar múltiples procesadores para completar múltiples tareas en simultáneo. 

              - -
              Thread 1: Task A --> Task B
              -Thread 2: Task C --> Task D
              - -

              JavaScript es single-threaded

              - -

              JavScript es tradicionalmente single-threaded. Aún con múltiples procesadores, solo se puede ejecutar tareas en un solo hilo, llamado el hilo principal (main thread). El ejemplo de arriba se ejecuta de la siguiente manera:

              - -
              Main thread: Render circles to canvas --> Display alert()
              - -

              Después de un tiempo, JavaScript ganó algunas herramientas que ayudaron con dichos problemas. Web workers permiten que se envíe parte del procesamiento de JavaScript a un hilo separado, llamado worker con el fin de que puedan ejecutar múltiples pedazos de JavaScript en simultáneo. Generalmente se usará un worker para ejectuar procesos de mucho consumo del hilo principal (main thread) con el fin de que no se bloquee la interacción del usuario.

              - -
                Main thread: Task A --> Task C
              -Worker thread: Expensive task B
              - -

              Con esto en mente, miremos el ejemplo simple-sync-worker.html (véalo ejecutándose en vivo) nuevamente con la consola de JavaScript del navegador abierta. Esto es una re-escritura del ejemplo anterior que calculaba 10 millones de fechas en hilos worker separados. Ahora si se clickea el botón, el navegador tiene permitido mostrar el párrafo antes de que las fechas haya terminado de calcularse. La primer operación ya no bloquea a la segunda.

              - -

              Código asincrónico

              - -

              Los web workers son muy útiles, pero tienen limitaciones. La mayor es que no pueden acceder al {{Glossary("DOM")}} — no se puede logar que un worker modifique directamente algo de la UI. No se puede representar 1 millón de círculos azules en un worker; básicamente solo puede hacer el cálculo numérico.

              - -

              El segundo problema es que a pesar de que el código se ejecuta en un worker no es bloqueador, es simplemente sincrónico. Esto se convierte en un problema cuando una función depender en los resultados de múltiples procesos previos para funcionar. Considere el siguiente diagrama de hilos:

              - -
              Main thread: Task A --> Task B
              - -

              En este caso, digamos que la Tarea A (Task A) está haciendo algo como buscando una imagen de un servidor y la Tarea B (Task B) luego hace algo con la imagen, como aplicarle un filtro. Si se ejecuta la Tarea A y luego inmediatamente se trata de ejecutar la Tarea B, se obtendrá un error, porque la imagen todavía no estará disponible.

              - -
                Main thread: Task A --> Task B --> |Task D|
              -Worker thread: Task C -----------> |      |
              - -

              En este caso, digamos que la Tarea D hace uso de los resultados de la Tarea B y la Tarea C. Se se puede garantizar que esos resultados estarán disponibles al mismo tiempo, entonces tal vez estemos OK, pero es poco probable. Si la Tarea D trata de ejecutarse cuando uno de sus inputs no está disponible, disparará un error.

              - -

              Para arreglar dichos problemas, los navegadores nos permiten ejecutar ciertas operaciones asincrónicamente. Características como las Promises (Promesas) permiten establecer la ejecución de una operación (por ejemplo, buscar una imagen desde un servidor), y luego esperar hasta que el resultado sea retornado antes de ejecutar otra operación. 

              - -
              Main thread: Task A                   Task B
              -    Promise:      |__async operation__|
              - -

              Como la operación está sucediendo en otro lugar, el hilo principal no está bloqueado mientras la operación asincrónica está siendo procesada.

              - -

              Vamos a empezar a ver cómo se puede escribir código asincrónico en el próximo artículo. Cosas emocionantes, ¿eh? ¡Siga leyendo!

              - -

              Conclusión

              - -

              El diseño del software moderno gira cada más entorno a la programación asincrónica, para permiterle a los programas hacer más de una cosa a la vez. A medida que use nuevas y más poderosas APIs, encontrará más casos donde la única forma de realizar las cosas es asincrónicamente. Era muy difícil escribir el código asincrónico. Todavía lleva tiempo acostumbrarse, pero se ha vuelto mucho más sencillo. En el resto de este módulo, exploraremos porqué el código asincrónico importa y cómo diseñar código que evite algunos de los problemas que hemos descrito en este artículo.

              - -

              En este módulo

              - - diff --git a/files/es/learn/javascript/asynchronous/introducing/index.html b/files/es/learn/javascript/asynchronous/introducing/index.html new file mode 100644 index 0000000000..85f605b479 --- /dev/null +++ b/files/es/learn/javascript/asynchronous/introducing/index.html @@ -0,0 +1,163 @@ +--- +title: General asynchronous programming concepts +slug: Learn/JavaScript/Asynchronous/Introducing +tags: + - Aprender + - Hilos + - JavaScript + - Promesas + - Threads + - bloques +translation_of: Learn/JavaScript/Asynchronous/Concepts +original_slug: Learn/JavaScript/Asynchronous/Concepts +--- +
              {{LearnSidebar}}{{NextMenu("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous")}}
              + +

              En este artículo, repasaremos una serie de conceptos importantes relacionados con la programación asincrónica y cómo se ve esto en los navegadores web y JavaScript. Debe comprender estos conceptos antes de trabajar con los demás artículos del módulo.

              + + + + + + + + + + + + +
              Pre-requisitos:Literatura básica de computadora, un razonable entendimiento de los fundamentos de JavaScript.
              Objetivo:Entender los conceptos básicos detrás de la programación asincrónica, y cómo se manifiesta en los exploradores web y JavaScript.
              + +

              ¿Asincrónico?

              + +

              Normalmente, el código de un programa determinado se ejecuta directamente, y solo sucede una cosa a la vez. Si una función se basa en el resultado de otra función, tiene que esperar a que la otra función termine y regrese, y hasta que eso suceda, todo el programa se detiene esencialmente desde la perspectiva del usuario.

              + +

              Los usuarios de Mac, por ejemplo, a veces experimentan esto como un cursor giratorio multicolor (o "beachball" - "bola de playa" - como es llamado frecuentemente). Este cursor es la manera que tiene el sistema operativo de decir "el actual programa que está usando tiene que parar y esperar que algo termine, y está tomando tanto tiempo que me preocupa que pienses qué está sucediendo."

              + +

              Multi-colored macOS beachball busy spinner

              + +

              Esto es una experiencia frustrante y no es un buen uso del poder de procesamiento de una computadora - especialmente en una era donde las computadoras tienen múltiples procesadores disponibles. No tiene sentido sentarse allí a esperar algo cuando podrías dejar que la otra tarea se ejecute en otro procesador y le notifique cuando termine. Mientras tanto, esto le permitiría terminar otros trabajos, lo cual es la base de la programación asincrónica. Depende del entorno de programación que esté usando (exploradores web, en caso de desarrollo web) proveer de APIs que le permitan ejecutar dichas tareas de manera asincrónica.

              + +

              Código de bloqueo (Blocking)

              + +

              Las técnicas asincrónicas son muy útiles, particularmente en programación web. Cuando una app web se ejecuta en el navegador y ejecuta un gran bloque de código sin retornar el control al navegador, este mismo puede parecer que se congela. Esto es llamado blocking; el navegador es bloqueado para que el usuario pueda seguir interactuando y realizando otras tareas hasta que la app web retorne el control sobre el procesador.

              + +

              Vamos a ver algunos ejemplos que muestren lo que significa blocking.

              + +

              En nuestro ejemplo simple-sync.html (véalo en vivo), agregamos un detector del evento click ("click event listener") a un botón con el fin de que cuando sea clickeado, ejecute una operación de un gran consumo de tiempo (calcula 10 millones de fechas y luego muestra la última en la consola) y luego agrega un párrafo al DOM:

              + +
              const btn = document.querySelector('button');
              +btn.addEventListener('click', () => {
              +  let myDate;
              +  for(let i = 0; i < 10000000; i++) {
              +    let date = new Date();
              +    myDate = date
              +  }
              +
              +  console.log(myDate);
              +
              +  let pElem = document.createElement('p');
              +  pElem.textContent = 'This is a newly-added paragraph.';
              +  document.body.appendChild(pElem);
              +});
              + +

              Cuando ejecute el ejemplo, abra su consola de JavaScript y haga click en el botón — notará que el párrafo no aparece hasta que las fechas hayan sido calculadas en su totalidad y el mensaje en la consola haya sido logueado. EL código se ejecuta en el orden en que aparece (de arriba hacia abajo), y la última operación no se ejecuta hasta que la anterior haya terminado.

              + +
              +

              Nota: El ejemplo anterior es poco realista. ¡Nunca se van a calcular 10 millones de fechas en una app web real! Sin embargo, sirve para dar una idea básica.

              +
              + +

              En nuestro segundo ejemplo, simple-sync-ui-blocking.html (véalo en vivo), se simula algo un poco más realista con el que se puede encontrar en una página real. Se bloquea la interacción del usuario con la carga ("rendering") de la UI. En este ejemplo, se tienen dos botones:

              + +
                +
              • Un botón "Fill canvas" que cuando es clickeado llena con 1 millón de círculos azules al {{htmlelement("canvas")}} disponible.
              • +
              • Un botón "Click me for alert" que cuando es clickeado muestra un mensaje de alerta.
              • +
              + +
              function expensiveOperation() {
              +  for(let i = 0; i < 1000000; i++) {
              +    ctx.fillStyle = 'rgba(0,0,255, 0.2)';
              +    ctx.beginPath();
              +    ctx.arc(random(0, canvas.width), random(0, canvas.height), 10, degToRad(0), degToRad(360), false);
              +    ctx.fill()
              +  }
              +}
              +
              +fillBtn.addEventListener('click', expensiveOperation);
              +
              +alertBtn.addEventListener('click', () =>
              +  alert('You clicked me!')
              +);
              + +

              Si se clickea el primer botón y rápidamente se clickea el segundo, se verá que la alerta no aparece hasta que los círculos hayan terminado de representarse. La primer operación blockea a la segunda hasta que esta haya terminado de ejecutarse.

              + +
              +

              Nota: OK, nuestro caso es feo y estamos fingiendo el efecto de bloqueo, pero es un problema común con el que los desarrolladores de aplicaciones reales batallan todo el tiempo.

              +
              + +

              ¿Por qué es esto? La respuesta es porque JavaScript, en general, es de "un solo hilo" (single-threaded). En este punto, se tiene que introduce el concepto de "hilos" (threads).

              + +

              Threads

              + +

              Un hilo (thread) es básicamente un proceso simple que un programa puede usar para completar tareas ("tasks"). Cada hilo solo puede realizar una tarea a la vez:

              + +
              Task A --> Task B --> Task C
              + +

              Cada tarea se va a ejecutar secuencialmente; una tarea tiene que completarse antes de que la próxima empiece.

              + +

              Como se dijo previamente, muchas computadores actualmente tienen múltiples procesadores, por lo que pueden realizar múltiples tareas a la vez. Los lenguajes de programación que pueden manejar múltiples hilos pueden usar múltiples procesadores para completar múltiples tareas en simultáneo. 

              + +
              Thread 1: Task A --> Task B
              +Thread 2: Task C --> Task D
              + +

              JavaScript es single-threaded

              + +

              JavScript es tradicionalmente single-threaded. Aún con múltiples procesadores, solo se puede ejecutar tareas en un solo hilo, llamado el hilo principal (main thread). El ejemplo de arriba se ejecuta de la siguiente manera:

              + +
              Main thread: Render circles to canvas --> Display alert()
              + +

              Después de un tiempo, JavaScript ganó algunas herramientas que ayudaron con dichos problemas. Web workers permiten que se envíe parte del procesamiento de JavaScript a un hilo separado, llamado worker con el fin de que puedan ejecutar múltiples pedazos de JavaScript en simultáneo. Generalmente se usará un worker para ejectuar procesos de mucho consumo del hilo principal (main thread) con el fin de que no se bloquee la interacción del usuario.

              + +
                Main thread: Task A --> Task C
              +Worker thread: Expensive task B
              + +

              Con esto en mente, miremos el ejemplo simple-sync-worker.html (véalo ejecutándose en vivo) nuevamente con la consola de JavaScript del navegador abierta. Esto es una re-escritura del ejemplo anterior que calculaba 10 millones de fechas en hilos worker separados. Ahora si se clickea el botón, el navegador tiene permitido mostrar el párrafo antes de que las fechas haya terminado de calcularse. La primer operación ya no bloquea a la segunda.

              + +

              Código asincrónico

              + +

              Los web workers son muy útiles, pero tienen limitaciones. La mayor es que no pueden acceder al {{Glossary("DOM")}} — no se puede logar que un worker modifique directamente algo de la UI. No se puede representar 1 millón de círculos azules en un worker; básicamente solo puede hacer el cálculo numérico.

              + +

              El segundo problema es que a pesar de que el código se ejecuta en un worker no es bloqueador, es simplemente sincrónico. Esto se convierte en un problema cuando una función depender en los resultados de múltiples procesos previos para funcionar. Considere el siguiente diagrama de hilos:

              + +
              Main thread: Task A --> Task B
              + +

              En este caso, digamos que la Tarea A (Task A) está haciendo algo como buscando una imagen de un servidor y la Tarea B (Task B) luego hace algo con la imagen, como aplicarle un filtro. Si se ejecuta la Tarea A y luego inmediatamente se trata de ejecutar la Tarea B, se obtendrá un error, porque la imagen todavía no estará disponible.

              + +
                Main thread: Task A --> Task B --> |Task D|
              +Worker thread: Task C -----------> |      |
              + +

              En este caso, digamos que la Tarea D hace uso de los resultados de la Tarea B y la Tarea C. Se se puede garantizar que esos resultados estarán disponibles al mismo tiempo, entonces tal vez estemos OK, pero es poco probable. Si la Tarea D trata de ejecutarse cuando uno de sus inputs no está disponible, disparará un error.

              + +

              Para arreglar dichos problemas, los navegadores nos permiten ejecutar ciertas operaciones asincrónicamente. Características como las Promises (Promesas) permiten establecer la ejecución de una operación (por ejemplo, buscar una imagen desde un servidor), y luego esperar hasta que el resultado sea retornado antes de ejecutar otra operación. 

              + +
              Main thread: Task A                   Task B
              +    Promise:      |__async operation__|
              + +

              Como la operación está sucediendo en otro lugar, el hilo principal no está bloqueado mientras la operación asincrónica está siendo procesada.

              + +

              Vamos a empezar a ver cómo se puede escribir código asincrónico en el próximo artículo. Cosas emocionantes, ¿eh? ¡Siga leyendo!

              + +

              Conclusión

              + +

              El diseño del software moderno gira cada más entorno a la programación asincrónica, para permiterle a los programas hacer más de una cosa a la vez. A medida que use nuevas y más poderosas APIs, encontrará más casos donde la única forma de realizar las cosas es asincrónicamente. Era muy difícil escribir el código asincrónico. Todavía lleva tiempo acostumbrarse, pero se ha vuelto mucho más sencillo. En el resto de este módulo, exploraremos porqué el código asincrónico importa y cómo diseñar código que evite algunos de los problemas que hemos descrito en este artículo.

              + +

              En este módulo

              + + diff --git a/files/fr/_redirects.txt b/files/fr/_redirects.txt index 3bc4db62c8..2f4624d9d5 100644 --- a/files/fr/_redirects.txt +++ b/files/fr/_redirects.txt @@ -2997,6 +2997,10 @@ /fr/docs/Learn/CSS/First_steps/Qu_est_ce_que_CSS /fr/docs/Learn/CSS/First_steps/What_is_CSS /fr/docs/Learn/CSS/Styling_text/Mise_en_forme_des_liens /fr/docs/Learn/CSS/Styling_text/Styling_links /fr/docs/Learn/CSS/Styling_text/initiation-mise-en-forme-du-texte /fr/docs/Learn/CSS/Styling_text/Fundamentals +/fr/docs/Learn/JavaScript/Asynchronous/Async_await /fr/docs/conflicting/Learn/JavaScript/Asynchronous/Promises +/fr/docs/Learn/JavaScript/Asynchronous/Choosing_the_right_approach /fr/docs/conflicting/Learn/JavaScript/Asynchronous +/fr/docs/Learn/JavaScript/Asynchronous/Concepts /fr/docs/conflicting/Learn/JavaScript/Asynchronous/Introducing +/fr/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals /fr/docs/conflicting/Learn/JavaScript/Asynchronous_ae5a561b0ec11fc53c167201aa8af5df /fr/docs/Learn/JavaScript/First_steps/Testes_vos_competence:_Tableaux /fr/docs/Learn/JavaScript/First_steps/Test_your_skills:_Arrays /fr/docs/Learn/JavaScript/First_steps/methode_chaine_utile /fr/docs/Learn/JavaScript/First_steps/Useful_string_methods /fr/docs/Learn/JavaScript/First_steps/tableaux /fr/docs/Learn/JavaScript/First_steps/Arrays @@ -3713,6 +3717,7 @@ /fr/docs/Web/API/PasswordCredential/idName /fr/docs/conflicting/Web/API/PasswordCredential_cbf7b306e83a3f58ff06bccf89637c12 /fr/docs/Web/API/PasswordCredential/passwordName /fr/docs/conflicting/Web/API/PasswordCredential_bc57d5dfa87242b4fb83497887124f41 /fr/docs/Web/API/Performance.now() /fr/docs/Web/API/Performance/now +/fr/docs/Web/API/Performance/onresourcetimingbufferfull /fr/docs/conflicting/Web/API/Performance/resourcetimingbufferfull_event /fr/docs/Web/API/Pointer_events/gestes_pincer_zoom /fr/docs/Web/API/Pointer_events/Pinch_zoom_gestures /fr/docs/Web/API/PositionOptions /fr/docs/conflicting/Web/API/Geolocation/getCurrentPosition_5852407122355d2ab39863042583c266 /fr/docs/Web/API/PositionOptions/enableHighAccuracy /fr/docs/conflicting/Web/API/Geolocation/getCurrentPosition diff --git a/files/fr/conflicting/learn/javascript/asynchronous/index.md b/files/fr/conflicting/learn/javascript/asynchronous/index.md new file mode 100644 index 0000000000..b2b9afbcd1 --- /dev/null +++ b/files/fr/conflicting/learn/javascript/asynchronous/index.md @@ -0,0 +1,440 @@ +--- +title: Choisir la bonne approche +slug: conflicting/Learn/JavaScript/Asynchronous +tags: + - Beginner + - Intervals + - JavaScript + - Learn + - Optimize + - Promises + - async + - asynchronous + - await + - requestAnimationFrame + - setInterval + - setTimeout + - timeouts +translation_of: Learn/JavaScript/Asynchronous/Choosing_the_right_approach +original_slug: Learn/JavaScript/Asynchronous/Choosing_the_right_approach +--- +{{LearnSidebar}}{{PreviousMenu("Learn/JavaScript/Asynchronous/Async_await", "Learn/JavaScript/Asynchronous")}} + +Pour terminer ce module, nous vous proposons une brève discussion sur les différentes techniques et fonctionnalités asynchrones abordées tout au long de ce module, en examinant laquelle de ces techniques est la plus pertinente en fonction de la situation ainsi que des recommandations et des rappels des pièges courants le cas échéant. + + + + + + + + + + + + +
              Prérequis : + Connaissances informatiques de base, une compréhension raisonnable des + principes fondamentaux de JavaScript. +
              Objectif : + Être capable de faire un choix judicieux quant à l'utilisation de + différentes techniques de programmation asynchrone. +
              + +## Fonctions de rappels (callbacks) asynchrones + +Généralement trouvé dans les API à l'ancienne, une fonction de rappel (ou _callback_ en anglais) implique qu'une fonction soit passée en paramètre à une autre fonction, qui est ensuite invoquée lorsqu'une opération asynchrone est terminée afin réaliser une opération avec le résultat. C'est la méthode qui précédait l'arrivée des promesses : elle n'est pas aussi efficace ou flexible. Ne l'utilisez que si nécessaire. + +| Opération unique retardée | Opération répétée | Opérations séquentielles multiples | Opérations simultanées multiples | +| ------------------------- | ----------------------- | ---------------------------------- | -------------------------------- | +| Non | Oui (rappels récursifs) | Oui (rappels imbriqués) | Non | + +### Exemple de code + +Un exemple qui charge une ressource via l'API [`XMLHttpRequest`](/fr/docs/Web/API/XMLHttpRequest) ([l'exécuter en direct](https://mdn.github.io/learning-area/javascript/asynchronous/introducing/xhr-async-callback.html), et [voir la source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/introducing/xhr-async-callback.html)) : + +```js +function loadAsset(url, type, callback) { + let xhr = new XMLHttpRequest(); + xhr.open('GET', url); + xhr.responseType = type; + + xhr.onload = function() { + callback(xhr.response); + }; + + xhr.send(); +} + +function displayImage(blob) { + let objectURL = URL.createObjectURL(blob); + + let image = document.createElement('img'); + image.src = objectURL; + document.body.appendChild(image); +} + +loadAsset('coffee.jpg', 'blob', displayImage); +``` + +### Pièges + +- Les fonctions de rappels imbriquées peuvent être encombrantes et difficiles à lire (ce qu'on appelle parfois « _callback hell_ » en anglais). +- Les fonctions de rappel pour les cas d'erreur doivent être appelés une fois pour chaque niveau d'imbrication, alors qu'avec les promesses, vous pouvez simplement utiliser un seul bloc `.catch()` pour gérer les erreurs de toute la chaîne. +- Les fonctions de rappel asynchrones ne sont pas très élégantes. +- Les fonctions de rappel passées en argument de promesses sont toujours appelés dans l'ordre strict où ils sont placés dans la file d'attente des événements ; les fonctions de rappel asynchrones ne le sont pas. +- Les fonctions de rappel asynchrones perdent le contrôle total de la façon dont la fonction sera exécutée lorsqu'elle est transmise à une bibliothèque tierce. + +### Compatibilité des navigateurs + +Très bonne prise en charge générale, bien que la prise en charge exacte dans les différentes API dépende de l'API en question. Reportez-vous à la documentation de référence de l'API que vous utilisez pour obtenir des informations plus spécifiques. + +### Plus d'informations + +- [Introduction au JavaScript asynchrone](/fr/docs/Learn/JavaScript/Asynchronous/Introducing), en particulier les [Fonctions de rappels asynchrones](/fr/docs/Learn/JavaScript/Asynchronous/Introducing#async_callbacks) + +## setTimeout() + +[`setTimeout()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout) est une méthode qui permet d'exécuter une fonction après l'écoulement d'un délai arbitraire. + +| Opération unique retardée | Opération répétée | Opérations séquentielles multiples | Opérations simultanées multiples | +| ------------------------- | ---------------------- | ---------------------------------- | -------------------------------- | +| Oui | Oui (délais récursifs) | Oui (délais d'attente imbriqués) | Non | + +### Exemple de code + +Ici, le navigateur attendra deux secondes avant d'exécuter la fonction anonyme, puis affichera le message dans la console ([voir son exécution en direct](https://mdn.github.io/learning-area/javascript/asynchronous/loops-and-intervals/simple-settimeout.html), et [voir le code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/loops-and-intervals/simple-settimeout.html)) : + +```js +let myGreeting = setTimeout(function() { + console.log('Bonjour, M. Univers !'); +}, 2000) +``` + +### Pièges + +Vous pouvez utiliser des appels récursifs à `setTimeout()` pour exécuter une fonction de manière répétée de façon similaire à `setInterval()`, en utilisant un code comme celui-ci : + +```js +let i = 1; +setTimeout(function run() { + console.log(i); + i++; + + setTimeout(run, 100); +}, 100); +``` + +Il existe une différence entre `setTimeout()` appelé récursivement et `setInterval()` : + +- Les récursions avec `setTimeout()` garantissent qu'au moins le temps spécifié (100ms dans cet exemple) s'écoulera entre les exécutions ; le code s'exécutera puis attendra 100 millisecondes avant de s'exécuter à nouveau. L'intervalle sera le même quelle que soit la durée d'exécution du code. +- Avec `setInterval()`, l'intervalle que nous choisissons _inclut_ le temps d'exécution du code que nous voulons exécuter. Disons que le code prend 40 millisecondes pour s'exécuter — l'intervalle finit alors par n'être que de 60 millisecondes. + +Lorsque votre code a le potentiel de prendre plus de temps à s'exécuter que l'intervalle de temps que vous avez assigné, il est préférable d'utiliser `setTimeout()` récursivement - cela maintiendra l'intervalle de temps constant entre les exécutions, quelle que soit la durée d'exécution du code, et vous n'obtiendrez pas d'erreurs. + +### Compatibilité des navigateurs + +{{Compat("api.WindowOrWorkerGlobalScope.setTimeout")}} + +### Plus d'informations + +- [JavaScript asynchrone coopératif : Délais et intervalles](/fr/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals), en particulier [`setTimeout()`]() +- Page de référence pour [`setTimeout()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout) + +## setInterval() + +[`setInterval()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setInterval) est une méthode qui permet d'exécuter une fonction de façon répétée avec des intervalles de temps donnés entre chaque exécution. Cette méthode n'est pas aussi efficace que [`requestAnimationFrame()`](/fr/docs/Web/API/Window/requestAnimationFrame), mais elle permet de choisir le rythme d'exécution. + +| Opération unique retardée | Opération répétée | Opérations séquentielles multiples | Opérations simultanées multiples | +| ------------------------- | ----------------- | ------------------------------------------ | -------------------------------- | +| Non | Oui | Non (à moins qu'elles ne soient les mêmes) | Non | + +### Exemple de code + +La fonction suivante crée un nouvel objet [`Date()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Date), en extrait une chaîne de temps à l'aide de [`toLocaleTimeString()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString), puis l'affiche dans l'interface utilisateur. Nous l'exécutons ensuite une fois par seconde à l'aide de `setInterval()`, créant l'effet d'une horloge numérique qui se met à jour une fois par seconde ([voir cela en direct](https://mdn.github.io/learning-area/javascript/asynchronous/loops-and-intervals/setinterval-clock.html), et aussi [voir la source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/loops-and-intervals/setinterval-clock.html)) : + +```js +function displayTime() { + let date = new Date(); + let time = date.toLocaleTimeString(); + document.getElementById('demo').textContent = time; +} + +const createClock = setInterval(displayTime, 1000); +``` + +### Pièges + +- La fréquence d'exécution et d'affichage n'est pas optimisée pour le système sur lequel l'animation est exécutée, et peut être quelque peu inefficace. À moins que vous n'ayez besoin de choisir un framerate spécifique (plus lent), il est généralement préférable d'utiliser `requestAnimationFrame()`. + +### Compatibilité des navigateurs + +{{Compat("api.WindowOrWorkerGlobalScope.setInterval")}} + +### Plus d'informations + +- [JavaScript asynchrone coopératif : Délais et intervalles](/fr/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals), en particulier [setInterval()](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setInterval) +- Page de référence pour [setInterval()](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setInterval) + +## requestAnimationFrame() + +[`requestAnimationFrame()`](/fr/docs/Web/API/Window/requestAnimationFrame) est une méthode qui vous permet d'exécuter une fonction de manière répétée, et efficace, à la meilleure fréquence de rafraîchissement disponible compte tenu du navigateur/système actuel. Vous devriez, dans la mesure du possible, utiliser cette méthode au lieu de `setInterval()`/`setTimeout()` récursif, sauf si vous avez besoin d'une fréquence de rafraîchissement spécifique. + +| Opération unique retardée | Opération répétée | Opérations séquentielles multiples | Opérations simultanées multiples | +| ------------------------- | ----------------- | ----------------------------------- | -------------------------------- | +| Non | Oui | Non (à moins que ce soit les mêmes) | Non | + +### Exemple de code + +Une toupie animée simple ; vous pouvez trouver cet [exemple en direct sur GitHub](https://mdn.github.io/learning-area/javascript/asynchronous/loops-and-intervals/simple-raf-spinner.html) (voir le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/loops-and-intervals/simple-raf-spinner.html)) : + +```js +const spinner = document.querySelector('div'); +let rotateCount = 0; +let startTime = null; +let rAF; + +function draw(timestamp) { + if(!startTime) { + startTime = timestamp; + } + + rotateCount = (timestamp - startTime) / 3; + + if(rotateCount > 359) { + rotateCount %= 360; + } + + spinner.style.transform = 'rotate(' + rotateCount + 'deg)'; + + rAF = requestAnimationFrame(draw); +} + +draw(); +``` + +### Pièges + +- Vous ne pouvez pas choisir une fréquence d'images spécifique avec `requestAnimationFrame()`. Si vous devez exécuter votre animation à un _framerate_ plus lent, vous devrez utiliser `setInterval()` ou `setTimeout()` récursif. + +### Compatibilité des navigateurs + +{{Compat("api.Window.requestAnimationFrame")}} + +### Plus d'informations + +- [JavaScript asynchrone coopératif : Délais et intervalles](/fr/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals), en particulier [`requestAnimationFrame()`]() +- Page de référence pour [`requestAnimationFrame()`](/fr/docs/Web/API/Window/requestAnimationFrame) + +## Promises (Promesses) + +[Les promesses](/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise) sont une fonctionnalité JavaScript qui permet d'exécuter des opérations asynchrones et d'attendre qu'elles soient définitivement terminées avant d'exécuter une autre opération en fonction de son résultat. Les promesses sont la colonne vertébrale du JavaScript asynchrone moderne. + +| Opération unique retardée | Opération répétée | Opérations séquentielles multiples | Opérations simultanées multiples | +| ------------------------- | ----------------- | ---------------------------------- | -------------------------------- | +| Non | Non | Oui | Voir `Promise.all()`, en dessous | + +### Exemple de code + +Le code suivant va chercher une image sur le serveur et l'affiche à l'intérieur d'un élément [``](/fr/docs/Web/HTML/Element/Img) ; [voyez-le aussi en direct](https://mdn.github.io/learning-area/javascript/asynchronous/promises/simple-fetch-chained.html), et voyez aussi [le code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/promises/simple-fetch-chained.html) : + +```js +fetch('coffee.jpg') +.then(response => response.blob()) +.then(myBlob => { + let objectURL = URL.createObjectURL(myBlob); + let image = document.createElement('img'); + image.src = objectURL; + document.body.appendChild(image); +}) +.catch(e => { + console.log('Il y a eu un problème avec votre opération de récupération : ' + e.message); +}); +``` + +### Pièges + +Les chaînes de promesses peuvent être complexes et difficiles à analyser. Si vous imbriquez un certain nombre de promesses, vous pouvez vous retrouver avec des problèmes similaires à l'enfer des rappels. Par exemple : + +```js +remotedb.allDocs({ + include_docs: true, + attachments: true +}).then(function (result) { + let docs = result.rows; + docs.forEach(function(element) { + localdb.put(element.doc).then(function(response) { + alert("Un document extrait avec un id " + element.doc._id + " et ajouté à la base de données locale."); + }).catch(function (err) { + if (err.name == 'conflict') { + localdb.get(element.doc._id).then(function (resp) { + localdb.remove(resp._id, resp._rev).then(function (resp) { +// et cetera... +``` + +Il est préférable d'utiliser la puissance de chaînage des promesses pour aller avec une structure plus plate et plus facile à analyser : + +```js +remotedb.allDocs(...).then(function (resultOfAllDocs) { + return localdb.put(...); +}).then(function (resultOfPut) { + return localdb.get(...); +}).then(function (resultOfGet) { + return localdb.put(...); +}).catch(function (err) { + console.log(err); +}); +``` + +ou encore : + +```js +remotedb.allDocs(...) +.then(resultOfAllDocs => { + return localdb.put(...); +}) +.then(resultOfPut => { + return localdb.get(...); +}) +.then(resultOfGet => { + return localdb.put(...); +}) +.catch(err => console.log(err)); +``` + +Cela couvre une grande partie des éléments de base. Pour un traitement beaucoup plus complet, voir l'excellent article [Nous avons un problème avec les promesses](https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html) (en), par Nolan Lawson. + +### Compatibilité des navigateurs + +{{Compat("javascript.builtins.Promise")}} + +### Plus d'informations + +- [Gérer les opérations asynchrones avec élégance grâce aux Promesses](/fr/docs/Learn/JavaScript/Asynchronous/Promises) +- [Utiliser les promesses](/fr/docs/Web/JavaScript/Guide/Using_promises) +- Page de référence pour [`Promise`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise) + +## Promise.all() + +Une fonction JavaScript qui vous permet d'attendre que plusieurs promesses se terminent avant d'exécuter une autre opération basée sur les résultats de toutes les autres promesses. + +| Opération unique retardée | Opération répétée | Opérations séquentielles multiples | Opérations simultanées multiples | +| ------------------------- | ----------------- | ---------------------------------- | -------------------------------- | +| Non | Non | Non | Oui | + +### Exemple de code + +L'exemple suivant va chercher plusieurs ressources sur le serveur, et utilise `Promise.all()` pour attendre qu'elles soient toutes disponibles avant de les afficher toutes — [le voir fonctionner](https://mdn.github.io/learning-area/javascript/asynchronous/promises/promise-all.html), et voir son [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/promises/promise-all.html) : + +```js +function fetchAndDecode(url, type) { + // Retourner la promesse de niveau supérieur, de sorte que le résultat + // de l'ensemble de la chaîne est retourné hors de la fonction + return fetch(url).then(response => { + // Selon le type de fichier recherché, utilisez la fonction appropriée pour décoder son contenu + if(type === 'blob') { + return response.blob(); + } else if(type === 'text') { + return response.text(); + } + }) + .catch(e => { + console.log(`Il y a eu un problème avec votre opération de récupération de la ressource "${url}" : ` + e.message); + }); +} + +// Appeler la méthode fetchAndDecode() pour récupérer les images et le texte +// et stocker leurs promesses dans des variables +let coffee = fetchAndDecode('coffee.jpg', 'blob'); +let tea = fetchAndDecode('tea.jpg', 'blob'); +let description = fetchAndDecode('description.txt', 'text'); + +// Utiliser Promise.all() pour exécuter le code uniquement lorsque +// les trois appels de fonction ont été résolus +Promise.all([coffee, tea, description]).then(values => { + console.log(values); + // Stocker chaque valeur retournée par les promesses dans des variables séparées ; + // créer des URL d'objets à partir des blobs. + let objectURL1 = URL.createObjectURL(values[0]); + let objectURL2 = URL.createObjectURL(values[1]); + let descText = values[2]; + + // Afficher les images dans les éléments + let image1 = document.createElement('img'); + let image2 = document.createElement('img'); + image1.src = objectURL1; + image2.src = objectURL2; + document.body.appendChild(image1); + document.body.appendChild(image2); + + // Afficher le texte d'un paragraphe + let para = document.createElement('p'); + para.textContent = descText; + document.body.appendChild(para); +}); +``` + +### Pièges + +- Si `Promesse.all()` est rejeté, alors une ou plusieurs des promesses que vous lui fournissez dans son paramètre de tableau doivent être rejetées, ou pourraient ne pas retourner de promesses du tout. Vous devez vérifier chacune d'entre elles pour voir ce qu'elles ont retourné. + +### Compatibilité des navigateurs + +{{Compat("javascript.builtins.Promise.all")}} + +### Plus d'informations + +- [Gérer les opérations asynchrones avec élégance grâce aux Promesses](/fr/docs/Learn/JavaScript/Asynchronous/Promises#running_code_in_response_to_multiple_promises_fulfilling) +- Page de référence pour [`Promise.all()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise/all) + +## async/await + +Un outil syntaxique construit sur les promesses qui vous permet d'exécuter des opérations asynchrones en utilisant une syntaxe qui ressemble plus à l'écriture de code de rappel synchrone. + +| Opération unique retardée | Opération répétée | Opérations séquentielles multiples | Opérations simultanées multiples | +| ------------------------- | ----------------- | ---------------------------------- | ----------------------------------------- | +| Non | Non | Oui | Oui (en combinaison avec `Promise.all()`) | + +### Exemple de code + +L'exemple suivant est un remaniement de l'exemple simple de promesse que nous avons vu précédemment, qui récupère et affiche une image, écrit à l'aide d'async/await ([voir en direct](https://mdn.github.io/learning-area/javascript/asynchronous/async-await/simple-refactored-fetch.html), et voir le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/async-await/simple-refactored-fetch.html)) : + +```js +async function myFetch() { + let response = await fetch('coffee.jpg'); + let myBlob = await response.blob(); + + let objectURL = URL.createObjectURL(myBlob); + let image = document.createElement('img'); + image.src = objectURL; + document.body.appendChild(image); +} + +myFetch(); +``` + +### Pièges + +- Vous ne pouvez pas utiliser l'opérateur `await` à l'intérieur d'une fonction non-`async`, ou dans le contexte de haut niveau de votre code. Cela peut parfois entraîner la création d'une fonction encapsulante supplémentaire, ce qui peut être légèrement frustrant dans certaines circonstances. Mais cela en vaut la peine la plupart du temps. +- Le support des navigateurs pour `async`/`await` n'est pas aussi bon que celui des promesses. Si vous souhaitez utiliser `async`/`await` mais que vous êtes préoccupé par la prise en charge de navigateurs plus anciens, vous pouvez envisager d'utiliser la bibliothèque [BabelJS](https://babeljs.io/) — cela vous permet d'écrire vos applications en utilisant le JavaScript le plus récent et de laisser Babel déterminer les modifications éventuellement nécessaires pour les navigateurs de vos utilisateurs. + +### Compatibilité des navigateurs + +{{Compat("javascript.statements.async_function")}} + +### Plus d'informations + +- [Faciliter la programmation asynchrone avec `async` et `await`](/fr/docs/Learn/JavaScript/Asynchronous/Async_await) +- Page de référence pour [les fonctions asynchrones](/fr/docs/Web/JavaScript/Reference/Statements/async_function) +- Page de référence pour l'opérateur [await](/fr/docs/Web/JavaScript/Reference/Operators/await) + +{{PreviousMenu("Learn/JavaScript/Asynchronous/Async_await", "Learn/JavaScript/Asynchronous")}} + +## Dans ce module + +- [Concepts généraux de programmation asynchrone](/fr/docs/Learn/JavaScript/Asynchronous/Concepts) +- [Introduction au JavaScript asynchrone](/fr/docs/Learn/JavaScript/Asynchronous/Introducing) +- [JavaScript asynchrone coopératif : Délais et intervalles](/fr/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals) +- [Gérer les opérations asynchrones avec élégance grâce aux Promesses](/fr/docs/Learn/JavaScript/Asynchronous/Promises) +- [Faciliter la programmation asynchrone avec `async` et `await`](/fr/docs/Learn/JavaScript/Asynchronous/Async_await) +- [Choisir la bonne approche](/fr/docs/Learn/JavaScript/Asynchronous/Choosing_the_right_approach) diff --git a/files/fr/conflicting/learn/javascript/asynchronous/introducing/index.md b/files/fr/conflicting/learn/javascript/asynchronous/introducing/index.md new file mode 100644 index 0000000000..2fadd1a162 --- /dev/null +++ b/files/fr/conflicting/learn/javascript/asynchronous/introducing/index.md @@ -0,0 +1,168 @@ +--- +title: Concepts généraux de programmation asynchrone +slug: conflicting/Learn/JavaScript/Asynchronous/Introducing +tags: + - JavaScript + - Learn + - Promises + - Threads + - asynchronous + - blocking +translation_of: Learn/JavaScript/Asynchronous/Concepts +original_slug: Learn/JavaScript/Asynchronous/Concepts +--- +{{LearnSidebar}}{{NextMenu("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous")}} + +Dans cet article, nous allons passer en revue un certain nombre de concepts importants relatifs à la programmation asynchrone et à la façon dont elle se présente dans les navigateurs web et JavaScript. Vous devriez comprendre ces concepts avant de travailler sur les autres articles du module. + + + + + + + + + + + + +
              Prérequis : + Connaissances informatiques de base, compréhension raisonnable des + principes fondamentaux de JavaScript. +
              Objectif : + Comprendre les concepts de base de la programmation asynchrone et la + façon dont elles se manifestent dans les navigateurs Web et dans + JavaScript. +
              + +## Asynchrone ? + +Normalement, le code d'un programme donné se déroule sans interruption, une seule chose se produisant à la fois. Si une fonction dépend du résultat d'une autre fonction, elle doit attendre que l'autre fonction se termine et retourne sa réponse, et jusqu'à ce que cela se produise, le programme entier est essentiellement bloqué du point de vue de l'utilisateur. + +Les utilisatrices et utilisateurs de macOS, par exemple, le voient parfois avec le curseur rotatif de couleur arc-en-ciel (ou « ballon de plage », comme on l'appelle souvent). Ce curseur est la façon dont le système d'exploitation dit "le programme que vous utilisez actuellement a dû s'arrêter et attendre que quelque chose se termine, et cela prend tellement de temps que je craignais que vous vous demandiez ce qui se passe". + +![Spinner multicolore pour macOS avec ballon de plage.](beachball.jpg) + +C'est une expérience frustrante qui n'est pas une bonne utilisation de la puissance de traitement de l'ordinateur, surtout à une époque où les ordinateurs disposent de plusieurs cœurs de processeur. Il est inutile de rester assis à attendre quelque chose alors que vous pouvez laisser une tâche se dérouler sur un autre cœur de processeur et être averti quand elle a terminé. Cela vous permet d'effectuer d'autres travaux en même temps, ce qui est la base de la **programmation asynchrone**. C'est à l'environnement de programmation que vous utilisez (les navigateurs web, dans le cas du développement web) de vous fournir des API qui vous permettent d'exécuter de telles tâches de manière asynchrone. + +## Code bloquant + +Les techniques asynchrones sont très utiles, notamment dans la programmation web. Lorsqu'une application web s'exécute dans un navigateur et qu'elle exécute un morceau de code considérable sans rendre le contrôle au navigateur, ce dernier peut sembler figé. C'est ce qu'on appelle du code **bloquant** ; le navigateur est incapable de continuer à traiter les entrées de l'utilisateur et d'effectuer d'autres tâches jusqu'à ce que l'application web rende le contrôle du processeur. + +Examinons quelques exemples qui montrent ce que nous entendons par blocage. + +Dans notre exemple [simple-sync.html](https://github.com/mdn/learning-area/tree/master/javascript/asynchronous/introducing/simple-sync.html) ([voir le fonctionnement en direct](https://mdn.github.io/learning-area/javascript/asynchronous/introducing/simple-sync.html)), nous ajoutons un écouteur d'événement de clic à un bouton de sorte que, lorsqu'il est cliqué, il exécute une opération qui prend du temps (calcule 10 millions de dates puis enregistre la dernière dans la console) et ajoute ensuite un paragraphe au DOM : + +```js +const btn = document.querySelector('button'); +btn.addEventListener('click', () => { + let myDate; + for(let i = 0; i < 10000000; i++) { + let date = new Date(); + myDate = date; + } + + console.log(myDate); + + let pElem = document.createElement('p'); + pElem.textContent = `Il s'agit d'un paragraphe nouvellement ajouté.`; + document.body.appendChild(pElem); +}); +``` + +Lorsque vous exécutez l'exemple, ouvrez votre console JavaScript, puis cliquez sur le bouton. Vous remarquerez que le paragraphe n'apparaît qu'une fois que le calcul des dates est terminé et que le message de la console a été enregistré. Le code s'exécute dans l'ordre où il apparaît dans la source, et la dernière opération ne s'exécute pas tant que la première n'est pas terminée. + +> **Note :** L'exemple précédent est très peu réaliste. Vous ne calculeriez jamais 10 millions de dates sur une véritable application web ! Il sert cependant à vous donner l'idée de base. + +Dans notre deuxième exemple, [simple-sync-ui-blocking.html](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/introducing/simple-sync-ui-blocking.html) ([voir en direct](https://mdn.github.io/learning-area/javascript/asynchronous/introducing/simple-sync-ui-blocking.html)), nous simulons quelque chose de légèrement plus réaliste que vous pourriez rencontrer sur une page réelle. Nous bloquons l'interactivité de l'utilisateur avec le rendu de l'interface utilisateur. Dans cet exemple, nous avons deux boutons : + +- Un bouton "Remplir le canevas" qui, lorsqu'il est cliqué, remplit le [``](/fr/docs/Web/HTML/Element/canvas) disponible avec 1 million de cercles bleus. +- Un bouton "Cliquez sur moi pour l'alerte" qui, lorsqu'il est cliqué, affiche un message d'alerte. + +```js +function expensiveOperation() { + for(let i = 0; i < 1000000; i++) { + ctx.fillStyle = 'rgba(0,0,255, 0.2)'; + ctx.beginPath(); + ctx.arc(random(0, canvas.width), random(0, canvas.height), 10, degToRad(0), degToRad(360), false); + ctx.fill(); + } +} + +fillBtn.addEventListener('click', expensiveOperation); + +alertBtn.addEventListener('click', () => + alert('Vous avez cliqué sur moi !'); +); +``` + +Si vous cliquez sur le premier bouton, puis rapidement sur le second, vous verrez que l'alerte n'apparaît pas avant que les cercles aient fini d'être rendus. La première opération bloque la seconde jusqu'à ce qu'elle ait fini de s'exécuter. + +> **Note :** D'accord, dans notre cas, c'est laid et nous simulons l'effet de blocage, mais il s'agit d'un problème courant contre lequel les développeuses et développeurs d'applications réelles se battent sans cesse pour atténuer les impacts indésirables. + +Pourquoi ? La réponse est que JavaScript, de manière générale, ne s'exécute que sur **un seul _thread_**. À ce stade, nous devons introduire le concept de **_threads_**. + +## Les threads + +Un **_thread_** est fondamentalement un processus unique qu'un programme peut utiliser pour accomplir des tâches. Chaque _thread_ ne peut effectuer qu'une seule tâche à la fois : + + Tâche A --> Tâche B --> Tâche C + +Chaque tâche sera exécutée de manière séquentielle ; une tâche doit être terminée avant que la suivante puisse être lancée. + +Comme nous l'avons dit précédemment, de nombreux ordinateurs sont désormais dotés de plusieurs cœurs et peuvent donc faire plusieurs choses à la fois. Les langages de programmation qui prennent en charge plusieurs processus peuvent utiliser plusieurs cœurs pour accomplir de multiples tâches simultanément : + + Processus 1: Tâche A --> Tâche B + Processus 2: Tâche C --> Tâche D + +### JavaScript n'a qu'un thread + +JavaScript est traditionnellement « single-threaded ». Même avec plusieurs cœurs, vous ne pouviez le faire exécuter des tâches que sur un seul processus, appelé le **main thread**. Notre exemple ci-dessus est exécuté comme ceci : + + processus principal : Rendre des cercles dans --> Afficher alert() + +Après un certain temps, JavaScript a gagné quelques outils pour aider à résoudre de tels problèmes. [Les Web workers](/fr/docs/Web/API/Web_Workers_API) vous permettent d'envoyer une partie du traitement JavaScript hors d'un processus distinct, appelé worker, afin que vous puissiez exécuter plusieurs morceaux JavaScript simultanément. Vous utiliserez généralement un worker pour exécuter des processus coûteux hors du processus principal afin de ne pas bloquer l'interaction avec l'utilisateur. + + Processus principal : Tâche A --> Tâche C + Processus du Worker : Tâche coûteuse B + +Dans cette optique, jetez un coup d'œil à [simple-sync-worker.html](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/introducing/simple-sync-worker.html) ([voyez-le fonctionner en direct](https://mdn.github.io/learning-area/javascript/asynchronous/introducing/simple-sync-worker.html)), toujours avec la console JavaScript de votre navigateur ouverte. Il s'agit d'une réécriture de notre exemple précédent qui calcule les 10 millions de dates dans un fil de travail (_worker_) séparé. Vous pouvez voir le code du _worker_ ici : [worker.js](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/introducing/worker.js). Désormais, lorsque vous cliquez sur le bouton, le navigateur est capable d'afficher le paragraphe avant que les dates n'aient fini d'être calculées. La première opération ne bloque plus la seconde et une fois que le _worker_ a fini ses calculs, la date est affichée dans la console. + +## Code asynchrone + +Les web workers sont très utiles, mais ils ont leurs limites. L'une des principales est qu'ils ne peuvent pas accéder au [DOM](/fr/docs/Glossary/DOM). Vous ne pouvez pas demander à un worker de faire directement quelque chose pour mettre à jour l'interface utilisateur. Nous n'avons pas pu rendre nos 1 million de cercles bleus à l'intérieur de notre worker ; il ne peut faire que le calcul des chiffres. + +Le deuxième problème est que, bien que le code exécuté dans un worker ne soit pas bloquant, il reste fondamentalement synchrone. Cela devient un problème lorsqu'une fonction s'appuie sur les résultats de plusieurs processus précédents pour fonctionner. Considérons les diagrammes de processus suivants : + + Processus principal : Tâche A --> Tâche B + +Dans ce cas, disons que la tâche A fait quelque chose comme récupérer une image du serveur et que la tâche B fait ensuite quelque chose à l'image comme lui appliquer un filtre. Si vous lancez la tâche A et essayez immédiatement d'exécuter la tâche B, vous obtiendrez une erreur, car l'image ne sera pas encore disponible. + + Processus principal : Tâche A --> Tâche B --> |Tâche D| + Processus du Worker : Tâche C --------------> | | + +Dans ce cas, disons que la tâche D utilise les résultats de la tâche B et de la tâche C. Si nous pouvons garantir que ces résultats seront tous deux disponibles au même moment, alors nous pourrions être OK, mais c'est peu probable. Si la tâche D tente de s'exécuter alors que l'une de ses entrées n'est pas encore disponible, elle déclenchera une erreur. + +Pour résoudre ces problèmes, les navigateurs nous permettent d'exécuter certaines opérations de manière asynchrone. Des fonctionnalités telles que [`Promise`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise) permettent de lancer une opération (par exemple, la récupération d'une image sur le serveur), puis d'attendre le retour du résultat avant de lancer une autre opération : + + Processus principal : Tâche A Tâche B + Promesse : |__opération asynchrone__| + +Comme l'opération se déroule ailleurs, le processus principal n'est pas bloqué pendant le traitement de l'opération asynchrone. + +Nous allons commencer à examiner comment écrire du code asynchrone dans le prochain article. C'est passionnant, non ? Bonne lecture ! + +## Conclusion + +La conception de logiciels modernes s'articule de plus en plus autour de l'utilisation de la programmation asynchrone, afin de permettre aux programmes de faire plusieurs choses à la fois. À mesure que vous utilisez des API plus récentes et plus puissantes, vous trouverez de plus en plus de cas où la seule façon de faire les choses est asynchrone. Il était autrefois difficile d'écrire du code asynchrone. Il faut encore s'y habituer, mais c'est devenu beaucoup plus facile. Dans la suite de ce module, nous étudierons plus en détail pourquoi le code asynchrone est important et comment concevoir un code qui évite certains des problèmes décrits ci-dessus. + +{{NextMenu("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous")}} + +## Dans ce module + +- [Concepts généraux de programmation asynchrone](/fr/docs/Learn/JavaScript/Asynchronous/Concepts) +- [Introduction au JavaScript asynchrone](/fr/docs/Learn/JavaScript/Asynchronous/Introducing) +- [JavaScript asynchrone coopératif : Délais et intervalles](/fr/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals) +- [Gérer les opérations asynchrones avec élégance grâce aux Promesses](/fr/docs/Learn/JavaScript/Asynchronous/Promises) +- [Faciliter la programmation asynchrone avec async et await](/fr/docs/Learn/JavaScript/Asynchronous/Async_await) +- [Choisir la bonne approche](/fr/docs/Learn/JavaScript/Asynchronous/Choosing_the_right_approach) diff --git a/files/fr/conflicting/learn/javascript/asynchronous/promises/index.md b/files/fr/conflicting/learn/javascript/asynchronous/promises/index.md new file mode 100644 index 0000000000..93a26dd1b8 --- /dev/null +++ b/files/fr/conflicting/learn/javascript/asynchronous/promises/index.md @@ -0,0 +1,595 @@ +--- +title: Faciliter la programmation asynchrone avec async et await +slug: conflicting/Learn/JavaScript/Asynchronous/Promises +tags: + - Beginner + - CodingScripting + - Guide + - JavaScript + - Learn + - Promises + - async + - asynchronous + - await +translation_of: Learn/JavaScript/Asynchronous/Async_await +original_slug: Learn/JavaScript/Asynchronous/Async_await +--- +{{LearnSidebar}}{{PreviousMenuNext("Learn/JavaScript/Asynchronous/Promises", "Learn/JavaScript/Asynchronous/Choosing_the_right_approach", "Learn/JavaScript/Asynchronous")}} + +Plus récemment, les [fonctions async](/fr/docs/Web/JavaScript/Reference/Statements/async_function) et le mot-clé [`await`](/fr/docs/Web/JavaScript/Reference/Operators/await) ont été ajoutés au langage JavaScript avec l'édition intitulée ECMAScript 2017. Ces fonctionnalités agissent essentiellement comme du sucre syntaxique sur les promesses, rendant le code asynchrone plus facile à écrire et à lire par la suite. Elles font en sorte que le code asynchrone ressemble davantage au code synchrone de la vieille école, et elles valent donc la peine d'être apprises. Cet article fournit les informations à connaître. + + + + + + + + + + + + +
              Prérequis : + Connaissances informatiques de base, compréhension raisonnable des + principes fondamentaux de JavaScript, compréhension du code asynchrone + en général et des promesses. +
              Objectif :Comprendre async/await et comment les utiliser.
              + +## Les bases de async/await + +L'utilisation `async/await` dans votre code comporte deux parties. + +### Le mot-clé async + +Tout d'abord, nous avons le mot-clé `async`, que vous mettez devant une déclaration de fonction pour la transformer en une [fonction asynchrone](/fr/docs/Web/JavaScript/Reference/Statements/async_function). Une fonction asynchrone est une fonction qui saura réagir à une éventuelle utilisation du mot-clé `await` pour invoquer du code asynchrone. + +Essayez de taper les lignes suivantes dans la console JS de votre navigateur : + +```js +function hello() { return "Bonjour" }; +hello(); +``` + +La fonction renvoie « Bonjour » — rien de spécial, n'est-ce pas ? + +Mais que se passe-t-il si nous transformons cette fonction en une fonction asynchrone ? Essayez ce qui suit : + +```js +async function hello() { return "Bonjour" }; +hello(); +``` + +Ah. L'invocation de la fonction renvoie maintenant une promesse. C'est l'une des caractéristiques des fonctions asynchrones - leurs valeurs de retour sont nécessairement converties en promesses. + +Vous pouvez également créer une [expression de fonction asynchrone](/fr/docs/Web/JavaScript/Reference/Operators/async_function), comme suit : + +```js +let hello = async function() { return "Bonjour" }; +hello(); +``` + +Et vous pouvez utiliser les fonctions fléchées : + +```js +let hello = async () => { return "Bonjour" }; +``` + +Elles font toutes à peu près la même chose. + +Pour consommer réellement la valeur renvoyée lorsque la promesse se réalise, puisqu'elle renvoie une promesse, nous pourrions utiliser un bloc `.then()` : + +```js +hello().then((value) => console.log(value)); +``` + +ou même simplement un raccourci tel que + +```js +hello().then(console.log); +``` + +Comme nous l'avons vu dans l'article précédent. + +Ainsi, le mot-clé `async` est ajouté aux fonctions pour leur indiquer de retourner une promesse plutôt que de retourner directement la valeur. + +### Le mot-clé await + +L'avantage d'une fonction asynchrone ne devient apparent que lorsque vous la combinez avec le mot-clé `await`. `await` ne fonctionne qu'à l'intérieur de fonctions asynchrones dans du code JavaScript ordinaire, mais il peut être utilisé seul avec [des modules JavaScript](/fr/docs/Web/JavaScript/Guide/Modules). + +`await` peut être placé devant toute fonction asynchrone basée sur une promesse pour mettre en pause votre code sur cette ligne jusqu'à ce que la promesse se réalise, puis retourner la valeur résultante. + +Vous pouvez utiliser `await` lors de l'appel de toute fonction qui renvoie une promesse, y compris les fonctions de l'API web. + +Voici un exemple trivial : + +```js +async function hello() { + return salutation = await Promise.resolve("Bonjour"); +}; + +hello().then(console.log); +``` + +Bien sûr, l'exemple ci-dessus n'est pas très utile, même s'il sert à illustrer la syntaxe. Passons maintenant à un exemple réel. + +## Réécriture du code des promesses avec async/await + +Reprenons un exemple simple de récupération que nous avons vu dans l'article précédent : + +```js +fetch('coffee.jpg') +.then(response => { + if (!response.ok) { + throw new Error(`Erreur HTTP ! statut : ${response.status}`); + } + return response.blob(); +}) +.then(myBlob => { + let objectURL = URL.createObjectURL(myBlob); + let image = document.createElement('img'); + image.src = objectURL; + document.body.appendChild(image); +}) +.catch(e => { + console.log('Il y a eu un problème avec votre opération de récupération : ' + e.message); +}); +``` + +À ce stade, vous devriez avoir une compréhension raisonnable des promesses et de leur fonctionnement, mais convertissons le tout en utilisant async/await pour voir à quel point cela simplifie les choses : + +```js +async function myFetch() { + let response = await fetch('coffee.jpg'); + + if (!response.ok) { + throw new Error(`Erreur HTTP ! statut : ${response.status}`); + } + + let myBlob = await response.blob(); + + let objectURL = URL.createObjectURL(myBlob); + let image = document.createElement('img'); + image.src = objectURL; + document.body.appendChild(image); +} + +myFetch() +.catch(e => { + console.log('Il y a eu un problème avec votre opération de récupération : ' + e.message); +}); +``` + +Cela rend le code beaucoup plus simple et plus facile à comprendre — plus de blocs `.then()` partout ! + +Étant donné qu'un mot-clé `async` transforme une fonction en promesse, vous pourriez remanier votre code pour utiliser une approche hybride de promesses et de `await`, en faisant sortir la seconde moitié de la fonction dans un nouveau bloc pour la rendre plus flexible : + +```js +async function myFetch() { + let response = await fetch('coffee.jpg'); + if (!response.ok) { + throw new Error(`Erreur HTTP ! statut : ${response.status}`); + } + return await response.blob(); + +} + +myFetch().then((blob) => { + let objectURL = URL.createObjectURL(blob); + let image = document.createElement('img'); + image.src = objectURL; + document.body.appendChild(image); +}).catch(e => console.log(e)); +``` + +Vous pouvez essayer de taper vous-même l'exemple, ou d'exécuter notre [exemple en direct](https://mdn.github.io/learning-area/javascript/asynchronous/async-await/simple-fetch-async-await.html) (voir aussi le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/async-await/simple-fetch-async-await.html)). + +### Mais comment est-ce que cela fonctionne ? + +Vous remarquerez que nous avons enveloppé le code à l'intérieur d'une fonction, et que nous avons inclus le mot-clé `async` avant le mot-clé `function`. C'est nécessaire - vous devez créer une fonction async pour définir un bloc de code dans lequel vous exécuterez votre code async ; comme nous l'avons dit précédemment, `await` ne fonctionne qu'à l'intérieur de fonctions async. + +À l'intérieur de la définition de la fonction `myFetch()`, vous pouvez voir que le code ressemble beaucoup à la version précédente de la promesse, mais il y a quelques différences. Au lieu de devoir enchaîner un bloc `.then()` à la fin de chaque méthode basée sur une promesse, il suffit d'ajouter un mot-clé `await` avant l'appel de la méthode, puis d'affecter le résultat à une variable. Le mot-clé `await` fait en sorte que le moteur d'exécution JavaScript mette votre code en pause sur cette ligne, ne permettant pas à d'autres codes de s'exécuter entre-temps jusqu'à ce que l'appel de fonction asynchrone ait retourné son résultat - très utile si le code suivant dépend de ce résultat ! + +Une fois que c'est terminé, votre code continue à s'exécuter à partir de la ligne suivante. Par exemple : + +```js +let response = await fetch('coffee.jpg'); +``` + +La réponse retournée par la promesse `fetch()` remplie est affectée à la variable `response` lorsque cette réponse devient disponible, et le parseur fait une pause sur cette ligne jusqu'à ce que cela se produise. Une fois que la réponse est disponible, le parseur passe à la ligne suivante, qui crée un [`Blob`](/fr/docs/Web/API/Blob) à partir de celle-ci. Cette ligne invoque également une méthode async basée sur les promesses, nous utilisons donc `await` ici aussi. Lorsque le résultat de l'opération revient, nous le retournons hors de la fonction `myFetch()`. + +Cela signifie que lorsque nous appelons la fonction `myFetch()`, elle retourne une promesse, de sorte que nous pouvons enchaîner un `.then()` à la fin de celle-ci à l'intérieur duquel nous gérons l'affichage du blob à l'écran. + +Vous vous dites probablement déjà « c'est vraiment cool ! », et vous avez raison — moins de blocs `.then()` pour envelopper le code, et cela ressemble surtout à du code synchrone, donc c'est vraiment intuitif. + +### Ajout de la gestion des erreurs + +Si vous voulez ajouter la gestion des erreurs, vous avez plusieurs options. + +Vous pouvez utiliser une structure synchrone [`try...catch`](/fr/docs/Web/JavaScript/Reference/Statements/try...catch) avec `async`/`await`. Cet exemple développe la première version du code que nous avons montré ci-dessus : + +```js +async function myFetch() { + try { + let response = await fetch('coffee.jpg'); + + if (!response.ok) { + throw new Error(`Erreur HTTP ! statut : ${response.status}`); + } + let myBlob = await response.blob(); + let objectURL = URL.createObjectURL(myBlob); + let image = document.createElement('img'); + image.src = objectURL; + document.body.appendChild(image); + + } catch(e) { + console.log(e); + } +} + +myFetch(); +``` + +Le bloc `catch() {}` reçoit un objet d'erreur, que nous avons appelé `e` ; nous pouvons maintenant l'enregistrer dans la console, et il nous donnera un message d'erreur détaillé montrant où dans le code l'erreur a été lancée. + +Si vous vouliez utiliser la deuxième version (remaniée) du code que nous avons montré ci-dessus, il serait préférable de continuer l'approche hybride et d'enchaîner un bloc `.catch()` à la fin de l'appel `.then()`, comme ceci : + +```js +async function myFetch() { + let response = await fetch('coffee.jpg'); + if (!response.ok) { + throw new Error(`Erreur HTTP ! statut : ${response.status}`); + } + return await response.blob(); + +} + +myFetch().then((blob) => { + let objectURL = URL.createObjectURL(blob); + let image = document.createElement('img'); + image.src = objectURL; + document.body.appendChild(image); +}) +.catch((e) => + console.log(e) +); +``` + +En effet, le bloc `.catch()` attrapera les erreurs survenant à la fois dans l'appel de fonction asynchrone et dans la chaîne de promesses. Si vous utilisiez le bloc `try`/`catch` ici, vous pourriez toujours obtenir des erreurs non gérées dans la fonction `myFetch()` lorsqu'elle est appelée. + +Vous pouvez trouver ces deux exemples sur GitHub : + +- [simple-fetch-async-await-try-catch.html](https://mdn.github.io/learning-area/javascript/asynchronous/async-await/simple-fetch-async-await-try-catch.html) (voir le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/async-await/simple-fetch-async-await-try-catch.html)) +- [simple-fetch-async-await-promise-catch.html](https://mdn.github.io/learning-area/javascript/asynchronous/async-await/simple-fetch-async-await-promise-catch.html) (voir le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/async-await/simple-fetch-async-await-promise-catch.html)) + +## En attente d'un Promise.all() + +`async`/`await` est construit au-dessus de [Promises](/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise), il est donc compatible avec toutes les fonctionnalités offertes par les promesses. Cela inclut [`Promise.all()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise) — vous pouvez tout à fait attendre un appel `Promise.all()` pour obtenir tous les résultats retournés dans une variable d'une manière qui ressemble à du simple code synchrone. Encore une fois, revenons à [un exemple que nous avons vu dans notre article précédent](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/promises/promise-all.html). Gardez-le ouvert dans un onglet séparé afin de pouvoir le comparer avec la nouvelle version présentée ci-dessous. + +En convertissant cela en `async`/`await` (voir la [démo live](https://mdn.github.io/learning-area/javascript/asynchronous/async-await/promise-all-async-await.html) et le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/async-await/promise-all-async-await.html)), cela ressemble maintenant à ceci : + +```js +async function fetchAndDecode(url, type) { + let response = await fetch(url); + + let content; + + if (!response.ok) { + throw new Error(`Erreur HTTP ! statut : ${response.status}`); + } else { + if(type === 'blob') { + content = await response.blob(); + } else if(type === 'text') { + content = await response.text(); + } + } + + return content; +} + +async function displayContent() { + let coffee = fetchAndDecode('coffee.jpg', 'blob'); + let tea = fetchAndDecode('tea.jpg', 'blob'); + let description = fetchAndDecode('description.txt', 'text'); + + let values = await Promise.all([coffee, tea, description]); + + let objectURL1 = URL.createObjectURL(values[0]); + let objectURL2 = URL.createObjectURL(values[1]); + let descText = values[2]; + + let image1 = document.createElement('img'); + let image2 = document.createElement('img'); + image1.src = objectURL1; + image2.src = objectURL2; + document.body.appendChild(image1); + document.body.appendChild(image2); + + let para = document.createElement('p'); + para.textContent = descText; + document.body.appendChild(para); +} + +displayContent() +.catch((e) => + console.log(e) +); +``` + +Vous verrez que la fonction `fetchAndDecode()` a été convertie facilement en fonction asynchrone avec seulement quelques modifications. Voir la ligne `Promise.all()` : + +```js +let values = await Promise.all([coffee, tea, description]); +``` + +En utilisant `await` ici, nous sommes en mesure d'obtenir tous les résultats des trois promesses retournées dans le tableau `values`, quand ils sont tous disponibles, d'une manière qui ressemble beaucoup à du code synchrone. Nous avons dû envelopper tout le code dans une nouvelle fonction asynchrone, `displayContent()`, et nous n'avons pas réduit le code de beaucoup de lignes, mais être capable de déplacer la majeure partie du code hors du bloc `.then()` fournit une simplification agréable et utile, nous laissant avec un programme beaucoup plus lisible. + +Pour la gestion des erreurs, nous avons inclus un bloc `.catch()` sur notre appel `displayContent()` ; cela permettra de gérer les erreurs survenant dans les deux fonctions. + +> **Note :** Il est également possible d'utiliser un bloc [`finally`](/fr/docs/Web/JavaScript/Reference/Statements/try...catch#the_finally_clause) au sein d'une fonction asynchrone, à la place d'un bloc asynchrone [`.finally()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally), pour montrer un état final sur le déroulement de l'opération — vous pouvez voir cela en action dans notre [exemple en direct](https://mdn.github.io/learning-area/javascript/asynchronous/async-await/promise-finally-async-await.html) (voir aussi le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/async-await/promise-finally-async-await.html)). + +## Gérer les ralentissements potentiellement causés par async/await + +Il est vraiment utile de connaître `async`/`await`, mais il y a quelques inconvénients à prendre en compte. + +`async`/`await` donne à votre code une apparence synchrone, et d'une certaine manière, il le fait se comporter de manière plus synchrone. Le mot-clé `await` bloque l'exécution de tout le code qui le suit jusqu'à ce que la promesse se réalise, exactement comme dans le cas d'une opération synchrone. Il permet certes aux autres tâches de continuer à s'exécuter entre-temps, mais le code attendu est bloqué. + +```js +async function makeResult(items) { + let newArr = []; + for(let i=0; i < items.length; i++) { + newArr.push('word_'+i); + } + return newArr; +} + +async function getResult() { + let result = await makeResult(items); // Bloqué sur cette ligne + useThatResult(result); // Pas exécuté tant que makeResult() n'a pas fini +} +``` + +Cela signifie que votre code pourrait être ralenti par un nombre important de promesses attendues se produisant directement les unes après les autres. Chaque `await` attendra que la précédente se termine, alors qu'en réalité ce que vous voulez, c'est que les promesses commencent à être traitées simultanément, comme elles le feraient si nous n'utilisions pas `async`/`await`. + +Il existe un modèle qui peut atténuer ce problème - déclencher tous les processus de promesse en stockant les objets `Promise` dans des variables, et en les attendant tous ensuite. Jetons un coup d'œil à quelques exemples qui prouvent le concept. + +Nous disposons de deux exemples - [slow-async-await.html](https://mdn.github.io/learning-area/javascript/asynchronous/async-await/slow-async-await.html) (voir le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/async-await/slow-async-await.html)) et [fast-async-await.html](https://mdn.github.io/learning-area/javascript/asynchronous/async-await/fast-async-await.html) (voir le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/async-await/fast-async-await.html)). Les deux commencent par une fonction promise personnalisée qui simule un processus asynchrone avec un appel [`setTimeout()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout) : + +```js +function timeoutPromise(interval) { + return new Promise((resolve, reject) => { + setTimeout(function(){ + resolve("fait"); + }, interval); + }); +}; +``` + +Ensuite, chacun comprend une fonction asynchrone `timeTest()` qui attend trois appels `timeoutPromise()` : + +```js +async function timeTest() { + ... +} +``` + +Chacune d'entre elles se termine en enregistrant une heure de début, en voyant combien de temps la promesse `timeTest()` met à se réaliser, puis en enregistrant une heure de fin et en indiquant combien de temps l'opération a pris au total : + +```js +let startTime = Date.now(); +timeTest().then(() => { + let finishTime = Date.now(); + let timeTaken = finishTime - startTime; + console.log("Temps pris en millisecondes : " + timeTaken); +}) +``` + +C'est la fonction `timeTest()` qui diffère dans chaque cas. + +Dans l'exemple `slow-async-await.html`, `timeTest()` ressemble à ceci : + +```js +async function timeTest() { + await timeoutPromise(3000); + await timeoutPromise(3000); + await timeoutPromise(3000); +} +``` + +Ici, nous attendons les trois appels `timeoutPromise()` directement, en faisant en sorte que chacun d'eux alerte pendant 3 secondes. Chaque appel suivant est forcé d'attendre jusqu'à ce que le dernier soit terminé - si vous exécutez le premier exemple, vous verrez la boîte d'alerte signaler une durée d'exécution totale d'environ 9 secondes. + +Dans l'exemple `fast-async-await.html`, `timeTest()` ressemble à ceci : + +```js +async function timeTest() { + const timeoutPromise1 = timeoutPromise(3000); + const timeoutPromise2 = timeoutPromise(3000); + const timeoutPromise3 = timeoutPromise(3000); + + await timeoutPromise1; + await timeoutPromise2; + await timeoutPromise3; +} +``` + +Ici, nous stockons les trois objets `Promise` dans des variables, ce qui a pour effet de déclencher leurs processus associés, tous exécutés simultanément. + +Ensuite, nous attendons leurs résultats - parce que les promesses ont toutes commencé à être traitées essentiellement au même moment, les promesses se réaliseront toutes en même temps ; lorsque vous exécuterez le deuxième exemple, vous verrez la boîte d'alerte indiquant un temps d'exécution total d'un peu plus de 3 secondes ! + +### Gestion des erreurs + +La stratégie précédente a un défaut : on pourrait avoir des erreurs qui ne seraient pas gérées. + +Mettons à jour les exemples précédents en ajoutant une promesse rejetée et une instruction `catch` à la fin : + +```js +function timeoutPromiseResolve(interval) { + return new Promise((resolve, reject) => { + setTimeout(function(){ + resolve("Succès"); + }, interval); + }); +}; + +function timeoutPromiseReject(interval) { + return new Promise((resolve, reject) => { + setTimeout(function(){ + reject("Erreur"); + }, interval); + }); +}; + +async function timeTest() { + await timeoutPromiseResolve(5000); + await timeoutPromiseReject(2000); + await timeoutPromiseResolve(3000); +} + +let startTime = Date.now(); +timeTest().then(() => {}) +.catch(e => { + console.log(e); + let finishTime = Date.now(); + let timeTaken = finishTime - startTime; + console.log("Temps écoulé en millisecondes : " + timeTaken); +}) +``` + +Dans l'exemple qui précède, l'erreur est gérée correctement et le message dans la console apparaît après environ 7 secondes. + +Voyons maintenant la deuxième approche : + +```js +function timeoutPromiseResolve(interval) { + return new Promise((resolve, reject) => { + setTimeout(function(){ + resolve("Succès"); + }, interval); + }); +}; + +function timeoutPromiseReject(interval) { + return new Promise((resolve, reject) => { + setTimeout(function(){ + reject("Erreur"); + }, interval); + }); +}; + +async function timeTest() { + const timeoutPromiseResolve1 = timeoutPromiseResolve(5000); + const timeoutPromiseReject2 = timeoutPromiseReject(2000); + const timeoutPromiseResolve3 = timeoutPromiseResolve(3000); + + await timeoutPromiseResolve1; + await timeoutPromiseReject2; + await timeoutPromiseResolve3; +} + +let startTime = Date.now(); +timeTest().then(() => { +}).catch(e => { + console.log(e); + let finishTime = Date.now(); + let timeTaken = finishTime - startTime; + console.log("Temps écoulé en millisecondes : " + timeTaken); +}) +``` + +Dans cet exemple, on a une erreur qui n'est pas gérée dans la console (après 2 secondes) et le message apparaît après environ 5 secondes. + +Pour démarrer les promesses en parallèles et intercepter les erreurs correctement, on pourrait utiliser `Promise.all()` comme vu auparavant : + +```js +function timeoutPromiseResolve(interval) { + return new Promise((resolve, reject) => { + setTimeout(function(){ + resolve("Succès"); + }, interval); + }); +}; + +function timeoutPromiseReject(interval) { + return new Promise((resolve, reject) => { + setTimeout(function(){ + reject("Erreur"); + }, interval); + }); +}; + +async function timeTest() { + const timeoutPromiseResolve1 = timeoutPromiseResolve(5000); + const timeoutPromiseReject2 = timeoutPromiseReject(2000); + const timeoutPromiseResolve3 = timeoutPromiseResolve(3000); + + const results = await Promise.all([timeoutPromiseResolve1, timeoutPromiseReject2, timeoutPromiseResolve3]); + return results; +} + +let startTime = Date.now(); +timeTest().then(() => { +}).catch(e => { + console.log(e); + let finishTime = Date.now(); + let timeTaken = finishTime - startTime; + console.log("Temps écoulé en millisecondes : " + timeTaken); +}) +``` + +Dans cet exemple, l'erreur est gérée correctement après 2 secondes et on a le message dans la console après environ 2 secondes. + +La méthode `Promise.all()` rejète lorsqu'au moins un de ses promesses d'entrée rejète. Si on veut que toutes les promesses soient résolues (correctement ou avec un rejet), on pourra utiliser la méthode [`Promise.allSettled()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled) à la place. + +## Méthodes de classe async/await + +Une dernière remarque avant de poursuivre, vous pouvez même ajouter `async` devant les méthodes de classe/objet pour qu'elles renvoient des promesses, et `await` des promesses à l'intérieur de celles-ci. Jetez un œil au [code de la classe ES que nous avons vu dans notre article sur le JavaScript orienté objet](/fr/docs/Learn/JavaScript/Objects/Inheritance#ecmascript_2015_classes), puis regardez notre version modifiée avec une méthode `async` : + +```js +class Personne { + constructor(prenom, nomFamille, age, genre, interets) { + this.nom = { + prenom, + nomFamille + }; + this.age = age; + this.genre = genre; + this.interets = interets; + } + + async salutation() { + return await Promise.resolve(`Bonjour ! Je suis ${this.nom.prenom}`); + }; + + aurevoir() { + console.log(`${this.nom.prenom} a quitté le bâtiment. À une prochaine fois !`); + }; +} + +let han = new Personne('Han', 'Solo', 25, 'homme', ['Contrebande']); +``` + +La méthode de la première classe peut maintenant être utilisée de la manière suivante : + +```js +han.salutation().then(console.log); +``` + +## Prise en charge des navigateurs + +L'une des considérations à prendre en compte pour décider d'utiliser `async`/`await`est la prise en charge des anciens navigateurs. Ces fonctionnalités sont disponibles dans les versions modernes de la plupart des navigateurs, tout comme les promesses ; les principaux problèmes de prise en charge concernent Internet Explorer et Opera Mini. + +Si vous souhaitez utiliser `async`/`await` mais que vous êtes préoccupé par la prise en charge de navigateurs plus anciens, vous pouvez envisager d'utiliser la bibliothèque [BabelJS](https://babeljs.io/). Cela vous permet d'écrire vos applications en utilisant les dernières versions de JavaScript et de laisser Babel déterminer les modifications éventuellement nécessaires pour les navigateurs de vos utilisateurs. Lorsque vous rencontrez un navigateur qui ne supporte pas async/await, le _polyfill_ « prothèse d'émulation » de Babel peut automatiquement fournir des _fallbacks_ « solutions de secours » qui fonctionnent dans les anciens navigateurs. + +## Conclusion + +Et voilà, `async`/`await` offre un moyen agréable et simplifié d'écrire du code asynchrone, plus facile à lire et à maintenir. Même si la prise en charge par les navigateurs est plus limitée que d'autres mécanismes de code asynchrone à l'heure où nous écrivons ces lignes, cela vaut la peine de l'apprendre et d'envisager de l'utiliser, maintenant et à l'avenir. + +{{PreviousMenuNext("Learn/JavaScript/Asynchronous/Promises", "Learn/JavaScript/Asynchronous/Choosing_the_right_approach", "Learn/JavaScript/Asynchronous")}} + +## Dans ce module + +- [Concepts généraux de programmation asynchrone](/fr/docs/Learn/JavaScript/Asynchronous/Concepts) +- [Introduction au JavaScript asynchrone](/fr/docs/Learn/JavaScript/Asynchronous/Introducing) +- [JavaScript asynchrone coopératif : Délais et intervalles](/fr/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals) +- [Gérer les opérations asynchrones avec élégance grâce aux Promesses](/fr/docs/Learn/JavaScript/Asynchronous/Promises) +- [Faciliter la programmation asynchrone avec async et await](/fr/docs/Learn/JavaScript/Asynchronous/Async_await) +- [Choisir la bonne approche](/fr/docs/Learn/JavaScript/Asynchronous/Choosing_the_right_approach) diff --git a/files/fr/conflicting/learn/javascript/asynchronous_ae5a561b0ec11fc53c167201aa8af5df/index.md b/files/fr/conflicting/learn/javascript/asynchronous_ae5a561b0ec11fc53c167201aa8af5df/index.md new file mode 100644 index 0000000000..11ea92030f --- /dev/null +++ b/files/fr/conflicting/learn/javascript/asynchronous_ae5a561b0ec11fc53c167201aa8af5df/index.md @@ -0,0 +1,648 @@ +--- +title: 'JavaScript asynchrone coopératif : délais et intervalles' +slug: conflicting/Learn/JavaScript/Asynchronous_ae5a561b0ec11fc53c167201aa8af5df +tags: + - Animation + - Beginner + - CodingScripting + - Guide + - Intervals + - JavaScript + - Loops + - asynchronous + - requestAnimationFrame + - setInterval + - setTimeout + - timeouts +translation_of: Learn/JavaScript/Asynchronous/Timeouts_and_intervals +original_slug: Learn/JavaScript/Asynchronous/Timeouts_and_intervals +--- +{{LearnSidebar}}{{PreviousMenuNext("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous/Promises", "Learn/JavaScript/Asynchronous")}} + +Ce tutoriel présente les méthodes traditionnelles dont dispose JavaScript pour exécuter du code de manière asynchrone après l'écoulement d'une période de temps déterminée ou à un intervalle régulier (par exemple, un nombre déterminé de fois par seconde), discute de leur utilité et examine leurs problèmes inhérents. + + + + + + + + + + + + +
              Prérequis : + Connaissances informatiques de base, compréhension raisonnable des + principes fondamentaux de JavaScript. +
              Objectif : + Comprendre les boucles et les intervalles asynchrones et leur utilité. +
              + +## Introduction + +Depuis longtemps, la plate-forme Web offre aux programmeurs JavaScript un certain nombre de fonctions qui leur permettent d'exécuter du code de manière asynchrone après un certain intervalle de temps, et d'exécuter un bloc de code de manière asynchrone jusqu'à ce que vous lui demandiez de s'arrêter. + +Ces fonctions sont : + +- [`setTimeout()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout) + - : Exécuter un bloc de code spécifié une fois, après qu'un temps spécifié se soit écoulé. +- [`setInterval()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setInterval) + - : Exécuter un bloc de code spécifique de manière répétée, avec un délai fixe entre chaque appel. +- [`requestAnimationFrame()`](/fr/docs/Web/API/Window/requestAnimationFrame) + - : La version moderne de `setInterval()`. Exécute un bloc de code spécifié avant que le navigateur ne repeigne ensuite l'affichage, ce qui permet à une animation d'être exécutée à une fréquence d'images appropriée, quel que soit l'environnement dans lequel elle est exécutée. + +Le code asynchrone mis en place par ces fonctions s'exécute sur le processus principal (après l'écoulement de leur minuterie spécifiée). + +Il est important de savoir que vous pouvez (et allez souvent) exécuter un autre code avant qu'un appel `setTimeout()` ne s'exécute, ou entre les itérations de `setInterval()`. Selon l'intensité du processeur de ces opérations, elles peuvent retarder encore plus votre code asynchrone, car tout code asynchrone ne s'exécutera qu'_après_ la disponibilité du processus principal. (En d'autres termes, lorsque la pile est vide.) Vous en apprendrez davantage à ce sujet au fur et à mesure que vous progresserez dans cet article. + +Dans tous les cas, ces fonctions sont utilisées pour exécuter des animations constantes et d'autres traitements en arrière-plan sur un site Web ou une application. Dans les sections suivantes, nous allons vous montrer comment les utiliser. + +## setTimeout() + +Comme nous l'avons dit précédemment, [`setTimeout()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout) exécute un bloc de code particulier une fois qu'un temps spécifié s'est écoulé. Il prend les paramètres suivants : + +- Une fonction à exécuter, ou une référence à une fonction définie ailleurs. +- Un nombre représentant l'intervalle de temps en millisecondes (1000 millisecondes équivalent à 1 seconde) à attendre avant d'exécuter le code. Si vous spécifiez une valeur de `0` (ou omettez la valeur), la fonction sera exécutée dès que possible. (Voir la note ci-dessous sur la raison pour laquelle elle s'exécute "dès que possible" et non "immédiatement"). Plus d'informations sur les raisons pour lesquelles vous pourriez vouloir faire cela plus tard. +- Zéro ou plusieurs valeurs représentant les paramètres que vous souhaitez transmettre à la fonction lors de son exécution. + +> **Note :** La quantité de temps spécifiée (ou le délai) n'est **pas** le _temps garanti_ à l'exécution, mais plutôt le _temps minimum_ à l'exécution. Les rappels que vous passez à ces fonctions ne peuvent pas s'exécuter tant que la pile du processus principal n'est pas vide. +> +> En conséquence, un code comme `setTimeout(fn, 0)` s'exécutera dès que la pile sera vide, **pas** immédiatement. Si vous exécutez un code comme `setTimeout(fn, 0)` mais qu'immédiatement après vous exécutez une boucle qui compte de 1 à 10 milliards, votre rappel sera exécuté après quelques secondes. + +Dans l'exemple suivant, le navigateur attendra deux secondes avant d'exécuter la fonction anonyme, puis affichera le message d'alerte ([voir son exécution en direct](https://mdn.github.io/learning-area/javascript/asynchronous/loops-and-intervals/simple-settimeout.html), et [voir le code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/loops-and-intervals/simple-settimeout.html)) : + +```js +let maSalutation = setTimeout(() => { + console.log('Bonjour, M. Univers !'); +}, 2000); +``` + +Les fonctions que vous spécifiez n'ont pas besoin d'être anonymes. Vous pouvez donner un nom à votre fonction, et même la définir ailleurs et passer une référence de fonction à `setTimeout()`. Les deux versions suivantes de l'extrait de code sont équivalentes à la première : + +```js +// Avec une fonction nommée +let maSalutation = setTimeout(function direBonjour() { + console.log('Bonjour, M. Univers !'); +}, 2000); + +// Avec une fonction définie séparément +function direBonjour() { + console.log('Bonjour, M. Univers !'); +} + +let maSalutation = setTimeout(direBonjour, 2000); +``` + +Cela peut être utile si vous avez une fonction qui doit être appelée à la fois à partir d'un délai d'attente et en réponse à un événement, par exemple. Mais cela peut aussi vous aider à garder votre code en ordre, surtout si le rappel du délai d'attente représente plus de quelques lignes de code. + +`setTimeout()` renvoie une valeur d'identifiant qui peut être utilisée pour faire référence au délai d'attente ultérieurement, par exemple lorsque vous souhaitez l'arrêter. Voir [Effacement des délais d'attente](#clearing_timeouts) (ci-dessous) pour apprendre comment faire cela. + +### Passage de paramètres à une fonction setTimeout() + +Tous les paramètres que vous voulez passer à la fonction en cours d'exécution à l'intérieur du `setTimeout()` doivent lui être passés comme paramètres supplémentaires à la fin de la liste. + +Par exemple, vous pouvez remanier la fonction précédente pour qu'elle dise bonjour à la personne dont le nom lui est transmis : + +```js +function direBonjour(who) { + console.log(`Bonjour ${who} !`); +} +``` + +Maintenant, vous pouvez passer le nom de la personne dans l'appel `setTimeout()` comme troisième paramètre : + +```js +let maSalutation = setTimeout(direBonjour, 2000, 'M. Univers'); +``` + +### Effacement des délais d'attente + +Enfin, si un timeout a été créé, vous pouvez l'annuler avant que le temps spécifié ne se soit écoulé en appelant [`clearTimeout()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout), en lui passant en paramètre l'identifiant de l'appel `setTimeout()`. Donc pour annuler notre timeout ci-dessus, vous feriez ceci : + +```js +clearTimeout(maSalutation); +``` + +> **Note :** Voir [`greeter-app.html`](https://mdn.github.io/learning-area/javascript/asynchronous/loops-and-intervals/greeter-app.html) pour une démo un peu plus élaborée qui permet de définir le nom de la personne à saluer dans un formulaire, et d'annuler la salutation à l'aide d'un bouton séparé ([voir aussi le code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/loops-and-intervals/greeter-app.html)). + +## setInterval() + +`setTimeout()` fonctionne parfaitement lorsque vous devez exécuter du code une fois après une période de temps définie. Mais que se passe-t-il lorsque vous avez besoin d'exécuter le code encore et encore - par exemple, dans le cas d'une animation ? + +C'est là qu'intervient le [`setInterval()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/setInterval). Cela fonctionne de manière très similaire à `setTimeout()`, sauf que la fonction que vous passez comme premier paramètre est exécutée de manière répétée à une fréquence égale au nombre de millisecondes donné par le deuxième paramètre distinct, plutôt qu'une seule fois. Vous pouvez également passer tous les paramètres requis par la fonction en cours d'exécution comme paramètres ultérieurs de l'appel `setInterval()`. + +Prenons un exemple. La fonction suivante crée un nouvel objet [`Date()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Date), en extrait une chaîne de temps en utilisant [`toLocaleTimeString()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString), puis l'affiche dans l'interface utilisateur. Elle exécute ensuite la fonction une fois par seconde à l'aide de `setInterval()`, créant l'effet d'une horloge numérique qui se met à jour une fois par seconde ([voir cela en direct](https://mdn.github.io/learning-area/javascript/asynchronous/loops-and-intervals/setinterval-clock.html), et aussi [voir la source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/loops-and-intervals/setinterval-clock.html)) : + +```js +function displayTime() { + let date = new Date(); + let time = date.toLocaleTimeString(); + document.getElementById('demo').textContent = time; +} + +const createClock = setInterval(displayTime, 1000); +``` + +Tout comme `setTimeout()`, `setInterval()` renvoie une valeur d'identification que vous pouvez utiliser plus tard lorsque vous devez effacer l'intervalle. + +### Effacement des intervalles + +`setInterval()` continue à exécuter une tâche pour toujours, à moins que vous ne fassiez quelque chose à ce sujet. Vous voudrez probablement un moyen d'arrêter de telles tâches, sinon vous pouvez finir par obtenir des erreurs lorsque le navigateur ne peut pas compléter d'autres versions de la tâche, ou si l'animation gérée par la tâche est terminée. Vous pouvez le faire de la même manière que vous arrêtez les temporisations - en passant l'identifiant renvoyé par l'appel `setInterval()` à la fonction [`clearInterval()`](/fr/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval) : + +```js +const myInterval = setInterval(myFunction, 2000); + +clearInterval(myInterval); +``` + +#### Apprentissage actif : Créez votre propre chronomètre ! + +Tout ceci étant dit, nous avons un défi à vous proposer. Prenez une copie de notre exemple [`setInterval-clock.html`](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/loops-and-intervals/setinterval-clock.html), et modifiez-le pour créer votre propre chronomètre simple. + +Vous devez afficher une heure comme précédemment, mais dans cet exemple, vous avez besoin : + +- Un bouton "Start" pour lancer le chronomètre. +- Un bouton "Stop" pour le mettre en pause/arrêter. +- Un bouton "Reset" pour réinitialiser le temps à `0`. +- L'affichage du temps pour indiquer le nombre de secondes écoulées, plutôt que le temps réel. + +Voici quelques conseils pour vous : + +- Vous pouvez structurer et styliser le balisage du bouton comme vous le souhaitez ; veillez simplement à utiliser du HTML sémantique, avec des crochets vous permettant de saisir les références du bouton à l'aide de JavaScript. +- Vous voulez probablement créer une variable qui commence à `0`, puis s'incrémente d'une unité toutes les secondes en utilisant une boucle constante. +- Il est plus facile de créer cet exemple sans utiliser un objet `Date()`, comme nous l'avons fait dans notre version, mais moins précis - vous ne pouvez pas garantir que le rappel se déclenchera après exactement `1000`ms. Une façon plus précise serait d'exécuter `startTime = Date.now()` pour obtenir un horodatage du moment exact où l'utilisateur a cliqué sur le bouton de démarrage, puis de faire `Date.now() - startTime` pour obtenir le nombre de millisecondes après le clic sur le bouton de démarrage. +- Vous souhaitez également calculer le nombre d'heures, de minutes et de secondes sous forme de valeurs distinctes, puis les afficher ensemble dans une chaîne de caractères après chaque itération de la boucle. À partir du deuxième compteur, vous pouvez calculer chacune de ces valeurs. +- Comment les calculeriez-vous ? Réfléchissez-y : + + - Le nombre de secondes dans une heure est de `3600`. + - Le nombre de minutes sera le nombre de secondes restantes lorsque toutes les heures auront été retirées, divisé par `60`. + - Le nombre de secondes sera le nombre de secondes restantes lorsque toutes les minutes auront été retirées. + +- Vous devrez inclure un zéro de tête sur vos valeurs d'affichage si le montant est inférieur à `10`, afin que cela ressemble davantage à une horloge/chronomètre traditionnel. +- Pour mettre le chronomètre en pause, il faut effacer l'intervalle. Pour le réinitialiser, vous devrez remettre le compteur à `0`, effacer l'intervalle, puis mettre immédiatement à jour l'affichage. +- Vous devriez probablement désactiver le bouton de démarrage après l'avoir pressé une fois, et le réactiver après l'avoir arrêté/réinitialisé. Sinon, les pressions multiples sur le bouton de démarrage appliqueront plusieurs `setInterval()` à l'horloge, ce qui entraînera un comportement erroné. + +> **Note :** Si vous êtes bloqué, vous pouvez [trouver notre version ici](https://mdn.github.io/learning-area/javascript/asynchronous/loops-and-intervals/setinterval-stopwatch.html) (voir le [code source](https://github.com/mdn/learning-area/blob/master/javascript/asynchronous/loops-and-intervals/setinterval-stopwatch.html)). + +## Choses à garder à l'esprit concernant setTimeout() et setInterval() + +Il y a quelques éléments à garder à l'esprit lorsque vous travaillez avec `setTimeout()` et `setInterval()`. Passons-les en revue maintenant. + +### Délais récursifs + +Il existe une autre façon d'utiliser `setTimeout()` : vous pouvez l'appeler de manière récursive pour exécuter le même code de manière répétée, au lieu d'utiliser `setInterval()`. + +L'exemple ci-dessous utilise un `setTimeout()` récursif pour exécuter la fonction passée toutes les `100` millisecondes : + +```js +let i = 1; + +setTimeout(function run() { + console.log(i); + i++; + setTimeout(run, 100); +}, 100); +``` + +Comparez l'exemple ci-dessus à celui qui suit - celui-ci utilise `setInterval()` pour accomplir le même effet : + +```js +let i = 1; + +setInterval(function run() { + console.log(i); + i++; +}, 100); +``` + +#### Quelle est la différence entre le `setTimeout()` récursif et le `setInterval()` ? + +La différence entre les deux versions du code ci-dessus est subtile. + +- Le `setTimeout()` récursif garantit le délai indiqué entre les exécutions. L'attente de la prochaine exécution commencera uniquement après que le code ait fini de s'exécuter. Dans cet exemple, le code s'exécutera, puis attendra `100` millisecondes avant de s'exécuter à nouveau - l'intervalle sera donc le même, quelle que soit la durée d'exécution du code. +- L'exemple utilisant `setInterval()` fait les choses un peu différemment. L'intervalle que vous avez choisi _inclut_ le temps d'exécution du code que vous voulez exécuter. Disons que le code prend `40` millisecondes pour s'exécuter - l'intervalle finit alors par être seulement de `60` millisecondes. +- Lorsque vous utilisez `setTimeout()` de manière récursive, chaque itération peut calculer un délai différent avant d'exécuter l'itération suivante. En d'autres termes, la valeur du deuxième paramètre peut spécifier un temps différent en millisecondes à attendre avant d'exécuter à nouveau le code. + +Lorsque votre code a le potentiel de prendre plus de temps à s'exécuter que l'intervalle de temps que vous avez assigné, il est préférable d'utiliser le `setTimeout()` récursif - cela maintiendra l'intervalle de temps constant entre les exécutions, quelle que soit la durée d'exécution du code, et vous n'obtiendrez pas d'erreurs. + +### Délais immédiats + +En utilisant `0` comme valeur pour `setTimeout()`, on planifie l'exécution de la fonction de rappel spécifiée dès que possible, mais seulement après l'exécution du processus de code principal. + +Par exemple, le code ci-dessous ([voir en direct](https://mdn.github.io/learning-area/javascript/asynchronous/loops-and-intervals/zero-settimeout.html)) produit une alerte contenant `"Hello"`, puis une alerte contenant `"World"` dès que vous cliquez sur OK sur la première alerte. + +```js +setTimeout(() => { + alert('World'); +}, 0); + +alert('Hello'); +``` + +Cela peut être utile dans les cas où vous souhaitez définir un bloc de code à exécuter dès que l'ensemble du thread principal a terminé son exécution - placez-le dans la boucle d'événement asynchrone, de sorte qu'il s'exécutera immédiatement après. + +### Effacement avec clearTimeout() ou clearInterval() + +`clearTimeout()` et `clearInterval()` utilisent toutes deux la même liste d'entrées pour effacer. Il est intéressant de noter que cela signifie que vous pouvez utiliser l'une comme l'autre méthode pour effacer un `setTimeout()` ou `setInterval()`. + +Par souci de cohérence, vous devriez utiliser `clearTimeout()` pour effacer les entrées `setTimeout()` et `clearInterval()` pour effacer les entrées `setInterval()`. Cela permettra d'éviter toute confusion. + +## requestAnimationFrame() + +[`requestAnimationFrame()`](/fr/docs/Web/API/Window/requestAnimationFrame) est une fonction de bouclage spécialisée, créée pour exécuter des animations de manière efficace dans le navigateur. Elle exécute un bloc de code spécifié avant que le navigateur ne repeigne ensuite l'affichage, ce qui permet d'exécuter une animation à une fréquence de rafraîchissement appropriée, quel que soit l'environnement dans lequel elle est exécutée. + +Elle a été créée en réponse aux problèmes perçus avec les fonctions asynchrones antérieures comme `setInterval()`, qui, par exemple, ne s'exécute pas à une fréquence d'images optimisée pour le matériel et continue à s'exécuter alors qu'elle pourrait s'arrêter lorsque l'onglet n'est plus actif ou si l'animation se déroule hors de la page, etc. + +([Plus d'informations à ce sujet sur CreativeJS](http://creativejs.com/resources/requestanimationframe/index.html) (en).) + +> **Note :** Vous trouverez des exemples d'utilisation de `requestAnimationFrame()` ailleurs dans le cours - voir par exemple [Dessiner des éléments graphiques](/fr/docs/Learn/JavaScript/Client-side_web_APIs/Drawing_graphics), et [La construction d'objet en pratique](/fr/docs/Learn/JavaScript/Objects/Object_building_practice). + +La méthode prend comme argument un rappel à invoquer avant le repeignage. C'est le modèle général dans lequel vous le verrez utilisé : + +```js +function draw() { + // Le code du dessin va ici + requestAnimationFrame(draw); +} + +draw(); +``` + +L'idée est de définir une fonction dans laquelle votre animation est mise à jour (par exemple, vos sprites sont déplacés, le score est mis à jour, les données sont rafraîchies, ou autre). Ensuite, vous l'appelez pour lancer le processus. À la fin du bloc de fonctions, vous appelez `requestAnimationFrame()` avec la référence de la fonction passée en paramètre, et cela indique au navigateur de rappeler la fonction lors du prochain rafraîchissement de l'affichage. Ceci est ensuite exécuté en continu, car le code appelle `requestAnimationFrame()` de manière récursive. + +> **Note :** Si vous souhaitez réaliser une sorte d'animation DOM simple et constante, [les animations CSS](/fr/docs/Web/CSS/CSS_Animations) sont probablement plus rapides. Elles sont calculées directement par le code interne du navigateur, plutôt que par JavaScript. +> +> Si, toutefois, vous faites quelque chose de plus complexe et impliquant des objets qui ne sont pas directement accessibles à l'intérieur du DOM (comme les objets [2D Canvas API](/fr/docs/Web/API/Canvas_API) ou [WebGL](/fr/docs/Web/API/WebGL_API)), `requestAnimationFrame()` est la meilleure option dans la plupart des cas. + +### Quelle est la vitesse de votre animation ? + +La fluidité de votre animation dépend directement de la fréquence d'images de votre animation, qui est mesurée en images par seconde (ips). Plus ce nombre est élevé, plus votre animation sera fluide, jusqu'à un certain point. + +Comme la plupart des écrans ont une fréquence de rafraîchissement de 60 Hz, la fréquence d'images la plus rapide que vous pouvez viser est de 60 images par seconde (IPS) lorsque vous travaillez avec des navigateurs Web. Cependant, plus d'images signifie plus de traitement, ce qui peut souvent provoquer des saccades et des sauts - également connus sous le nom de _dégradation des images_, ou _saccades_. + +Si vous disposez d'un moniteur avec une fréquence de rafraîchissement de 60 Hz et que vous souhaitez obtenir 60 IPS, vous disposez d'environ 16,7 millisecondes (`1000 / 60`) pour exécuter votre code d'animation et rendre chaque image. Ceci est un rappel que vous devrez être attentif à la quantité de code que vous essayez d'exécuter pendant chaque passage dans la boucle d'animation. + +`requestAnimationFrame()` essaie toujours de se rapprocher le plus possible de cette valeur magique de 60 IPS. Parfois, ce n'est pas possible - si vous avez une animation vraiment complexe et que vous l'exécutez sur un ordinateur lent, votre fréquence d'images sera inférieure. Dans tous les cas, `requestAnimationFrame()` fera toujours du mieux qu'il peut avec ce dont il dispose. + +### En quoi requestAnimationFrame() diffère-t-il de setInterval() et setTimeout() ? + +Parlons un peu plus de la façon dont la méthode `requestAnimationFrame()` diffère des autres méthodes utilisées précédemment. En regardant notre code d'en haut : + +```js +function draw() { + // Le code du dessin va ici + requestAnimationFrame(draw); +} + +draw(); +``` + +Voyons maintenant comment faire la même chose en utilisant `setInterval()` : + +```js +function draw() { + // Le code du dessin va ici +} + +setInterval(draw, 17); +``` + +Comme nous l'avons couvert précédemment, vous ne spécifiez pas d'intervalle de temps pour `requestAnimationFrame()`. Il l'exécute simplement aussi vite et aussi bien que possible dans les conditions actuelles. Le navigateur ne perd pas non plus de temps à l'exécuter si l'animation est hors écran pour une raison quelconque, etc. + +`setInterval()`, d'autre part _exige_ qu'un intervalle soit spécifié. Nous sommes arrivés à notre valeur finale de 17 via la formule _1000 millisecondes / 60Hz_, puis nous l'avons arrondie. Arrondir vers le haut est une bonne idée ; si vous arrondissez vers le bas, le navigateur pourrait essayer d'exécuter l'animation à une vitesse supérieure à 60 FPS, et cela ne ferait de toute façon aucune différence pour la fluidité de l'animation. Comme nous l'avons déjà dit, 60 Hz est la fréquence de rafraîchissement standard. + +### Inclure un horodatage + +Le rappel réel passé à la fonction `requestAnimationFrame()` peut également recevoir un paramètre : une valeur _timestamp_, qui représente le temps depuis que le `requestAnimationFrame()` a commencé à s'exécuter. + +C'est utile car cela vous permet d'exécuter des choses à des moments précis et à un rythme constant, quelle que soit la vitesse ou la lenteur de votre appareil. Le modèle général que vous utiliserez ressemble à quelque chose comme ceci : + +```js +let startTime = null; + +function draw(timestamp) { + if (!startTime) { + startTime = timestamp; + } + + currentTime = timestamp - startTime; + + // Faire quelque chose en fonction du temps actuel + + requestAnimationFrame(draw); +} + +draw(); +``` + +### Prise en charge des navigateurs + +`requestAnimationFrame()` est supporté par des navigateurs plus récents que pour `setInterval()`/`setTimeout()`. Il est intéressant de noter qu'elle est disponible dans Internet Explorer 10 et plus. + +Ainsi, à moins que vous ne deviez prendre en charge d'anciennes versions d'IE, il y a peu de raisons de ne pas utiliser `requestAnimationFrame()`. + +### Un exemple simple + +Assez avec la théorie ! Construisons votre propre exemple personnel de `requestAnimationFrame()`. Vous allez créer une simple "animation de toupie" - le genre que vous pourriez voir affiché dans une application lorsqu'elle est occupée à se connecter au serveur, etc. + +> **Note :** Dans un exemple du monde réel, vous devriez probablement utiliser des animations CSS pour exécuter ce type d'animation simple. Cependant, ce genre d'exemple est très utile pour démontrer l'utilisation de `requestAnimationFrame()`, et vous seriez plus susceptible d'utiliser ce genre de technique lorsque vous faites quelque chose de plus complexe comme la mise à jour de l'affichage d'un jeu à chaque image. + +1. Prenez un modèle HTML de base ([comme celui-ci](https://github.com/mdn/learning-area/blob/master/html/introduction-to-html/getting-started/index.html)). +2. Placez un élément [`
              `](/fr/docs/Web/HTML/Element/div) vide à l'intérieur de l'élément [``](/fr/docs/Web/HTML/Element/body), puis ajoutez un caractère ↻ à l'intérieur. Ce caractère de flèche circulaire fera office de notre toupie pour cet exemple. +3. Appliquez le CSS suivant au modèle HTML (de la manière que vous préférez). Cela définit un fond rouge sur la page, définit la hauteur du `` à `100%` de la hauteur de [``](/fr/docs/Web/HTML/Element/html), et centre le `
              ` à l'intérieur du ``, horizontalement et verticalement. + + ```css + html { + background-color: white; + height: 100%; + } + + body { + height: inherit; + background-color: red; + margin: 0; + display: flex; + justify-content: center; + align-items: center; + } + + div { + display: inline-block; + font-size: 10rem; + } + ``` + +4. Insérez un élément [` +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Element.nextElementSibling")}} +- {{domxref("Element.lastElementChild")}} -- cgit v1.2.3-54-g00ecf From 07b1e49337d5fda31acf76572fd712b434493948 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 8 Mar 2022 23:45:15 +0900 Subject: 2022/01/24 時点の英語版に基づき新規翻訳 (#4337) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ja/web/api/element/nextelementsibling/index.md | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 files/ja/web/api/element/nextelementsibling/index.md (limited to 'files/ja') diff --git a/files/ja/web/api/element/nextelementsibling/index.md b/files/ja/web/api/element/nextelementsibling/index.md new file mode 100644 index 0000000000..ea24a59878 --- /dev/null +++ b/files/ja/web/api/element/nextelementsibling/index.md @@ -0,0 +1,59 @@ +--- +title: Element.nextElementSibling +slug: Web/API/Element/nextElementSibling +tags: + - API + - DOM + - Element + - プロパティ +browser-compat: api.Element.nextElementSibling +translation_of: Web/API/Element/nextElementSibling +--- +{{APIRef("DOM")}} + +**`Element.nextElementSibling`** は読み取り専用のプロパティで、この要素の親の子リスト内ですぐ次にある要素を返します。このノードがリストの最後のノードであった場合は `null` を返します。 + +## 構文 + +```js +// ゲッター +element = el.nextElementSibling; + +// セッターなし。読み取り専用プロパティ +``` + +## 例 + +```html +
              Here is div-01
              +
              Here is div-02
              + + +``` + +この例は読み込み時に、コンソールに以下のような出力を行います。 + +``` +Siblings of div-01: +DIV +SCRIPT +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Element.previousElementSibling")}} -- cgit v1.2.3-54-g00ecf From 6a0af615e351a75f1c837bf88d90b34ba81bf463 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 8 Mar 2022 23:45:35 +0900 Subject: 2022/01/25 時点の英語版に基づき新規翻訳 (#4338) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/element/previouselementsibling/index.md | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 files/ja/web/api/element/previouselementsibling/index.md (limited to 'files/ja') diff --git a/files/ja/web/api/element/previouselementsibling/index.md b/files/ja/web/api/element/previouselementsibling/index.md new file mode 100644 index 0000000000..510b6efcc7 --- /dev/null +++ b/files/ja/web/api/element/previouselementsibling/index.md @@ -0,0 +1,68 @@ +--- +title: Element.previousElementSibling +slug: Web/API/Element/previousElementSibling +tags: + - API + - DOM + - Element + - プロパティ + - 読み取り専用 + - リファレンス +browser-compat: api.Element.previousElementSibling +translation_of: Web/API/Element/nextElementSibling +--- +{{APIRef("DOM")}} + +**`Element.previousElementSibling`** は読み取り専用のプロパティで、この要素 ({{domxref("Element")}}) の親の子リスト内ですぐ前にある要素を返します。このノードがリストの最初のノードであった場合は `null` を返します。 + +## 構文 + +```js +// ゲッター +element = el.previousElementSibling; + +// セッターなし。読み取り専用プロパティ +``` + +## 例 + +```html +
              Here is div-01
              +
              Here is div-02
              +
            • This is a list item
            • +
            • This is another list item
            • +
              Here is div-03
              + + +``` + +この例は読み込み時に、ぺ0時に以下のような出力を行います。 + +``` +Siblings of div-03 + + 1. LI + 2. LI + 3. DIV + 4. DIV +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("Element.nextElementSibling")}} -- cgit v1.2.3-54-g00ecf From fcaf278de3a2d71b1a94cabdaa934b895b3916bf Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Mon, 28 Feb 2022 23:16:41 +0900 Subject: Element 以下のプロパティの記事を移行 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/element/attributes/index.html | 118 ------------ files/ja/web/api/element/attributes/index.md | 118 ++++++++++++ .../web/api/element/childelementcount/index.html | 42 ---- .../ja/web/api/element/childelementcount/index.md | 42 ++++ files/ja/web/api/element/children/index.html | 58 ------ files/ja/web/api/element/children/index.md | 58 ++++++ files/ja/web/api/element/classname/index.html | 35 ---- files/ja/web/api/element/classname/index.md | 35 ++++ files/ja/web/api/element/clientheight/index.html | 67 ------- files/ja/web/api/element/clientheight/index.md | 67 +++++++ files/ja/web/api/element/clientleft/index.html | 86 --------- files/ja/web/api/element/clientleft/index.md | 86 +++++++++ files/ja/web/api/element/clienttop/index.html | 37 ---- files/ja/web/api/element/clienttop/index.md | 37 ++++ files/ja/web/api/element/clientwidth/index.html | 65 ------- files/ja/web/api/element/clientwidth/index.md | 65 +++++++ files/ja/web/api/element/id/index.html | 57 ------ files/ja/web/api/element/id/index.md | 57 ++++++ files/ja/web/api/element/innerhtml/index.html | 213 --------------------- files/ja/web/api/element/innerhtml/index.md | 213 +++++++++++++++++++++ files/ja/web/api/element/localname/index.html | 87 --------- files/ja/web/api/element/localname/index.md | 87 +++++++++ files/ja/web/api/element/namespaceuri/index.html | 35 ---- files/ja/web/api/element/namespaceuri/index.md | 35 ++++ files/ja/web/api/element/outerhtml/index.html | 118 ------------ files/ja/web/api/element/outerhtml/index.md | 118 ++++++++++++ files/ja/web/api/element/prefix/index.html | 48 ----- files/ja/web/api/element/prefix/index.md | 48 +++++ files/ja/web/api/element/scrollheight/index.html | 173 ----------------- files/ja/web/api/element/scrollheight/index.md | 173 +++++++++++++++++ files/ja/web/api/element/scrollleft/index.html | 111 ----------- files/ja/web/api/element/scrollleft/index.md | 111 +++++++++++ files/ja/web/api/element/scrolltop/index.html | 92 --------- files/ja/web/api/element/scrolltop/index.md | 92 +++++++++ files/ja/web/api/element/scrollwidth/index.html | 125 ------------ files/ja/web/api/element/scrollwidth/index.md | 125 ++++++++++++ files/ja/web/api/element/tagname/index.html | 36 ---- files/ja/web/api/element/tagname/index.md | 36 ++++ 38 files changed, 1603 insertions(+), 1603 deletions(-) delete mode 100644 files/ja/web/api/element/attributes/index.html create mode 100644 files/ja/web/api/element/attributes/index.md delete mode 100644 files/ja/web/api/element/childelementcount/index.html create mode 100644 files/ja/web/api/element/childelementcount/index.md delete mode 100644 files/ja/web/api/element/children/index.html create mode 100644 files/ja/web/api/element/children/index.md delete mode 100644 files/ja/web/api/element/classname/index.html create mode 100644 files/ja/web/api/element/classname/index.md delete mode 100644 files/ja/web/api/element/clientheight/index.html create mode 100644 files/ja/web/api/element/clientheight/index.md delete mode 100644 files/ja/web/api/element/clientleft/index.html create mode 100644 files/ja/web/api/element/clientleft/index.md delete mode 100644 files/ja/web/api/element/clienttop/index.html create mode 100644 files/ja/web/api/element/clienttop/index.md delete mode 100644 files/ja/web/api/element/clientwidth/index.html create mode 100644 files/ja/web/api/element/clientwidth/index.md delete mode 100644 files/ja/web/api/element/id/index.html create mode 100644 files/ja/web/api/element/id/index.md delete mode 100644 files/ja/web/api/element/innerhtml/index.html create mode 100644 files/ja/web/api/element/innerhtml/index.md delete mode 100644 files/ja/web/api/element/localname/index.html create mode 100644 files/ja/web/api/element/localname/index.md delete mode 100644 files/ja/web/api/element/namespaceuri/index.html create mode 100644 files/ja/web/api/element/namespaceuri/index.md delete mode 100644 files/ja/web/api/element/outerhtml/index.html create mode 100644 files/ja/web/api/element/outerhtml/index.md delete mode 100644 files/ja/web/api/element/prefix/index.html create mode 100644 files/ja/web/api/element/prefix/index.md delete mode 100644 files/ja/web/api/element/scrollheight/index.html create mode 100644 files/ja/web/api/element/scrollheight/index.md delete mode 100644 files/ja/web/api/element/scrollleft/index.html create mode 100644 files/ja/web/api/element/scrollleft/index.md delete mode 100644 files/ja/web/api/element/scrolltop/index.html create mode 100644 files/ja/web/api/element/scrolltop/index.md delete mode 100644 files/ja/web/api/element/scrollwidth/index.html create mode 100644 files/ja/web/api/element/scrollwidth/index.md delete mode 100644 files/ja/web/api/element/tagname/index.html create mode 100644 files/ja/web/api/element/tagname/index.md (limited to 'files/ja') diff --git a/files/ja/web/api/element/attributes/index.html b/files/ja/web/api/element/attributes/index.html deleted file mode 100644 index f3653263ef..0000000000 --- a/files/ja/web/api/element/attributes/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Element.attributes -slug: Web/API/Element/attributes -tags: - - API - - Attributes - - DOM - - Element - - Property - - プロパティ - - リファレンス - - 属性 -translation_of: Web/API/Element/attributes ---- -

              {{ APIRef("DOM") }}

              - -

              Element.attributes プロパティは、そのノードに登録された全ての属性ノードのコレクションを返却します。返却される値は {{domxref("NamedNodeMap")}} であり、 Array ではありません。つまり、 {{jsxref("Array")}} のメソッドは持っておらず、 {{domxref("Attr")}} ノードのインデックスはブラウザーによって変わる可能性があります。より正確に言うと、 attributes はその属性に関するあらゆる情報を表す文字列のキーと値の組です。

              - -

              構文

              - -
              var attr = element.attributes;
              -
              - -

              - -

              基本的な例

              - -
              // ドキュメント内の最初の <p> 要素を取得する
              -var para = document.getElementsByTagName("p")[0];
              -var atts = para.attributes;
              - -

              要素の属性を列挙する

              - -

              ある要素の全ての属性を走査したい時には、インデックスを使うと便利です。
              - 次の例では、 "paragraph" を id に持つ要素の全ての属性ノードを走査し、その属性の値を表示します。

              - -
              <!DOCTYPE html>
              -
              -<html>
              -
              - <head>
              -  <title>Attributes example</title>
              -  <script type="text/javascript">
              -   function listAttributes() {
              -     var paragraph = document.getElementById("paragraph");
              -     var result = document.getElementById("result");
              -
              -     // まず、最初の段落(p1)がなんらかの属性を持っているか確かめよう
              -     if (paragraph.hasAttributes()) {
              -       var attrs = paragraph.attributes;
              -       var output = "";
              -       for(var i = attrs.length - 1; i >= 0; i--) {
              -         output += attrs[i].name + "->" + attrs[i].value;
              -       }
              -       result.value = output;
              -     } else {
              -       result.value = "No attributes to show";
              -     }
              -   }
              -  </script>
              - </head>
              -
              -<body>
              - <p id="paragraph" style="color: green;">Sample Paragraph</p>
              - <form action="">
              -  <p>
              -    <input type="button" value="Show first attribute name and value"
              -      onclick="listAttributes();">
              -    <input id="result" type="text" value="">
              -  </p>
              - </form>
              -</body>
              -</html>
              - -

              仕様書

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('DOM WHATWG', '#dom-element-attributes', 'Element.attributes')}}{{Spec2('DOM WHATWG')}}{{SpecName('DOM3 Core')}} 以降、 {{domxref("Node")}} から {{domxref("Element")}} へ移動
              {{SpecName('DOM3 Core', 'core.html#ID-84CF096', 'Element.attributes')}}{{Spec2('DOM3 Core')}}{{SpecName('DOM2 Core')}} から変更無し
              {{SpecName('DOM2 Core', 'core.html#ID-84CF096', 'Element.attributes')}}{{Spec2('DOM2 Core')}}{{SpecName('DOM1')}}から変更無し
              {{SpecName('DOM1', 'level-one-core.html#ID-84CF096', 'Element.attributes')}}{{Spec2('DOM1')}}初回定義
              - -

              ブラウザーの対応

              - -

              {{Compat("api.Element.attributes")}}

              - -

              関連情報

              - -
                -
              • 返却される値のインターフェースである {{domxref("NamedNodeMap")}}
              • -
              • quirksmode におけるブラウザー間の互換性への配慮
              • -
              diff --git a/files/ja/web/api/element/attributes/index.md b/files/ja/web/api/element/attributes/index.md new file mode 100644 index 0000000000..f3653263ef --- /dev/null +++ b/files/ja/web/api/element/attributes/index.md @@ -0,0 +1,118 @@ +--- +title: Element.attributes +slug: Web/API/Element/attributes +tags: + - API + - Attributes + - DOM + - Element + - Property + - プロパティ + - リファレンス + - 属性 +translation_of: Web/API/Element/attributes +--- +

              {{ APIRef("DOM") }}

              + +

              Element.attributes プロパティは、そのノードに登録された全ての属性ノードのコレクションを返却します。返却される値は {{domxref("NamedNodeMap")}} であり、 Array ではありません。つまり、 {{jsxref("Array")}} のメソッドは持っておらず、 {{domxref("Attr")}} ノードのインデックスはブラウザーによって変わる可能性があります。より正確に言うと、 attributes はその属性に関するあらゆる情報を表す文字列のキーと値の組です。

              + +

              構文

              + +
              var attr = element.attributes;
              +
              + +

              + +

              基本的な例

              + +
              // ドキュメント内の最初の <p> 要素を取得する
              +var para = document.getElementsByTagName("p")[0];
              +var atts = para.attributes;
              + +

              要素の属性を列挙する

              + +

              ある要素の全ての属性を走査したい時には、インデックスを使うと便利です。
              + 次の例では、 "paragraph" を id に持つ要素の全ての属性ノードを走査し、その属性の値を表示します。

              + +
              <!DOCTYPE html>
              +
              +<html>
              +
              + <head>
              +  <title>Attributes example</title>
              +  <script type="text/javascript">
              +   function listAttributes() {
              +     var paragraph = document.getElementById("paragraph");
              +     var result = document.getElementById("result");
              +
              +     // まず、最初の段落(p1)がなんらかの属性を持っているか確かめよう
              +     if (paragraph.hasAttributes()) {
              +       var attrs = paragraph.attributes;
              +       var output = "";
              +       for(var i = attrs.length - 1; i >= 0; i--) {
              +         output += attrs[i].name + "->" + attrs[i].value;
              +       }
              +       result.value = output;
              +     } else {
              +       result.value = "No attributes to show";
              +     }
              +   }
              +  </script>
              + </head>
              +
              +<body>
              + <p id="paragraph" style="color: green;">Sample Paragraph</p>
              + <form action="">
              +  <p>
              +    <input type="button" value="Show first attribute name and value"
              +      onclick="listAttributes();">
              +    <input id="result" type="text" value="">
              +  </p>
              + </form>
              +</body>
              +</html>
              + +

              仕様書

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName('DOM WHATWG', '#dom-element-attributes', 'Element.attributes')}}{{Spec2('DOM WHATWG')}}{{SpecName('DOM3 Core')}} 以降、 {{domxref("Node")}} から {{domxref("Element")}} へ移動
              {{SpecName('DOM3 Core', 'core.html#ID-84CF096', 'Element.attributes')}}{{Spec2('DOM3 Core')}}{{SpecName('DOM2 Core')}} から変更無し
              {{SpecName('DOM2 Core', 'core.html#ID-84CF096', 'Element.attributes')}}{{Spec2('DOM2 Core')}}{{SpecName('DOM1')}}から変更無し
              {{SpecName('DOM1', 'level-one-core.html#ID-84CF096', 'Element.attributes')}}{{Spec2('DOM1')}}初回定義
              + +

              ブラウザーの対応

              + +

              {{Compat("api.Element.attributes")}}

              + +

              関連情報

              + +
                +
              • 返却される値のインターフェースである {{domxref("NamedNodeMap")}}
              • +
              • quirksmode におけるブラウザー間の互換性への配慮
              • +
              diff --git a/files/ja/web/api/element/childelementcount/index.html b/files/ja/web/api/element/childelementcount/index.html deleted file mode 100644 index c3520c9a31..0000000000 --- a/files/ja/web/api/element/childelementcount/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Element.childElementCount -slug: Web/API/Element/childElementCount -tags: - - API - - DOM - - Property - - Reference -browser-compat: api.Element.childElementCount -translation_of: Web/API/Element/childElementCount -original_slug: Web/API/ParentNode/childElementCount ---- -
              {{ APIRef("DOM") }}
              - -

              Element.childElementCount は読み取り専用のプロパティで、この要素の子要素の数を返します。

              - -

              構文

              - -
              element.childElementCount;
              - -

              - -
              let sidebar = document.getElementById('sidebar');
              -if (sidebar.childElementCount > 0) {
              -  // 何もしない
              -}
              -
              - -

              仕様書

              - -{{Specifications}} - -

              ブラウザーの互換性

              - -

              {{Compat}}

              - -

              関連情報

              - -
                -
              • {{domxref("Document.childElementCount")}}
              • -
              • {{domxref("DocumentFragment.childElementCount")}}
              • -
              diff --git a/files/ja/web/api/element/childelementcount/index.md b/files/ja/web/api/element/childelementcount/index.md new file mode 100644 index 0000000000..c3520c9a31 --- /dev/null +++ b/files/ja/web/api/element/childelementcount/index.md @@ -0,0 +1,42 @@ +--- +title: Element.childElementCount +slug: Web/API/Element/childElementCount +tags: + - API + - DOM + - Property + - Reference +browser-compat: api.Element.childElementCount +translation_of: Web/API/Element/childElementCount +original_slug: Web/API/ParentNode/childElementCount +--- +
              {{ APIRef("DOM") }}
              + +

              Element.childElementCount は読み取り専用のプロパティで、この要素の子要素の数を返します。

              + +

              構文

              + +
              element.childElementCount;
              + +

              + +
              let sidebar = document.getElementById('sidebar');
              +if (sidebar.childElementCount > 0) {
              +  // 何もしない
              +}
              +
              + +

              仕様書

              + +{{Specifications}} + +

              ブラウザーの互換性

              + +

              {{Compat}}

              + +

              関連情報

              + +
                +
              • {{domxref("Document.childElementCount")}}
              • +
              • {{domxref("DocumentFragment.childElementCount")}}
              • +
              diff --git a/files/ja/web/api/element/children/index.html b/files/ja/web/api/element/children/index.html deleted file mode 100644 index 5dd887af4f..0000000000 --- a/files/ja/web/api/element/children/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Element.children -slug: Web/API/Element/children -tags: - - API - - DOM - - Element - - HTMLCollection - - Property - - children -browser-compat: api.Element.children -translation_of: Web/API/Element/children -original_slug: Web/API/ParentNode/children ---- -
              {{ APIRef("DOM") }}
              - -

              children は読み取り専用のプロパティで、生きた {{domxref("HTMLCollection")}} で呼び出された要素の子{{domxref("Element", "要素", "", 1)}}をすべて返します。

              - -

              Element.children は要素のノードしか含みません。すべての子ノード、例えばテキストやコメントノードなどを取得するには、 {{domxref("Node.childNodes")}} を使用してください。

              - -

              構文

              - -
              -// Getter
              -collection = myElement.children;
              -
              -// No setter; read-only property
              -
              - -

              返値

              - -

              生きた {{ domxref("HTMLCollection") }} で、 node の子の DOM 要素の順序付きコレクションを返します。コレクションの {{domxref("HTMLCollection.item()", "item()")}} メソッドか、 JavaScript の配列スタイルの記法を使って、コレクション内の個々の子ノードにアクセスすることができます。

              - -

              ノードが子要素を持たない場合、 children は要素を含まず、length0 です。

              - -

              例 

              - -
              const myElement = document.getElementById('foo');
              -for (let i = 0; i < myElement.children.length; i++) {
              -  console.log(myElement.children[i].tagName);
              -}
              -
              - -

              仕様書

              - -{{Specifications}} - -

              ブラウザーの互換性

              - -

              {{Compat}}

              - -

              関連情報

              - -
                -
              • - {{domxref("Node.childNodes")}} -
              • -
              diff --git a/files/ja/web/api/element/children/index.md b/files/ja/web/api/element/children/index.md new file mode 100644 index 0000000000..5dd887af4f --- /dev/null +++ b/files/ja/web/api/element/children/index.md @@ -0,0 +1,58 @@ +--- +title: Element.children +slug: Web/API/Element/children +tags: + - API + - DOM + - Element + - HTMLCollection + - Property + - children +browser-compat: api.Element.children +translation_of: Web/API/Element/children +original_slug: Web/API/ParentNode/children +--- +
              {{ APIRef("DOM") }}
              + +

              children は読み取り専用のプロパティで、生きた {{domxref("HTMLCollection")}} で呼び出された要素の子{{domxref("Element", "要素", "", 1)}}をすべて返します。

              + +

              Element.children は要素のノードしか含みません。すべての子ノード、例えばテキストやコメントノードなどを取得するには、 {{domxref("Node.childNodes")}} を使用してください。

              + +

              構文

              + +
              +// Getter
              +collection = myElement.children;
              +
              +// No setter; read-only property
              +
              + +

              返値

              + +

              生きた {{ domxref("HTMLCollection") }} で、 node の子の DOM 要素の順序付きコレクションを返します。コレクションの {{domxref("HTMLCollection.item()", "item()")}} メソッドか、 JavaScript の配列スタイルの記法を使って、コレクション内の個々の子ノードにアクセスすることができます。

              + +

              ノードが子要素を持たない場合、 children は要素を含まず、length0 です。

              + +

              例 

              + +
              const myElement = document.getElementById('foo');
              +for (let i = 0; i < myElement.children.length; i++) {
              +  console.log(myElement.children[i].tagName);
              +}
              +
              + +

              仕様書

              + +{{Specifications}} + +

              ブラウザーの互換性

              + +

              {{Compat}}

              + +

              関連情報

              + +
                +
              • + {{domxref("Node.childNodes")}} +
              • +
              diff --git a/files/ja/web/api/element/classname/index.html b/files/ja/web/api/element/classname/index.html deleted file mode 100644 index 00f15100e7..0000000000 --- a/files/ja/web/api/element/classname/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: element.className -slug: Web/API/Element/className -tags: - - DOM - - Gecko - - Gecko DOM Reference -translation_of: Web/API/Element/className ---- -
              - {{ApiRef}}
              -

              概要

              -

              className は要素の class 属性の値の取得 / 設定に用います。

              -

              構文

              -
              cName = elementNodeReference.className;
              -elementNodeReference.className = cName;
              -
                -
              • cName : クラス名(文字列)
              • -
              -

              -
              var elm = document.getElementById("div1"); //対象要素を取得
              -
              -if (elm.className == "fixed") {
              -  // 対象要素のクラス名が "fixed" であった場合の処理をここに記述
              -}
              -

              注記

              -

              "class" という語句はプログラミングに於いて様々な文脈で用いられる為、競合を防ぐために className という名称となっています。

              -

              仕様書

              - -

              関連情報

              -
                -
              • {{domxref("element.classList")}}
              • -
              diff --git a/files/ja/web/api/element/classname/index.md b/files/ja/web/api/element/classname/index.md new file mode 100644 index 0000000000..00f15100e7 --- /dev/null +++ b/files/ja/web/api/element/classname/index.md @@ -0,0 +1,35 @@ +--- +title: element.className +slug: Web/API/Element/className +tags: + - DOM + - Gecko + - Gecko DOM Reference +translation_of: Web/API/Element/className +--- +
              + {{ApiRef}}
              +

              概要

              +

              className は要素の class 属性の値の取得 / 設定に用います。

              +

              構文

              +
              cName = elementNodeReference.className;
              +elementNodeReference.className = cName;
              +
                +
              • cName : クラス名(文字列)
              • +
              +

              +
              var elm = document.getElementById("div1"); //対象要素を取得
              +
              +if (elm.className == "fixed") {
              +  // 対象要素のクラス名が "fixed" であった場合の処理をここに記述
              +}
              +

              注記

              +

              "class" という語句はプログラミングに於いて様々な文脈で用いられる為、競合を防ぐために className という名称となっています。

              +

              仕様書

              + +

              関連情報

              +
                +
              • {{domxref("element.classList")}}
              • +
              diff --git a/files/ja/web/api/element/clientheight/index.html b/files/ja/web/api/element/clientheight/index.html deleted file mode 100644 index 4cde36518d..0000000000 --- a/files/ja/web/api/element/clientheight/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Element.clientHeight -slug: Web/API/Element/clientHeight -tags: - - API - - CSSOM View - - NeedsMarkupWork - - Property - - Reference -translation_of: Web/API/Element/clientHeight ---- -
              {{APIRef("DOM")}}
              - -

              Element.clientHeight は読み取り専用のプロパティで、 CSS のない要素やインラインレイアウトボックスではゼロになります。それ以外では、要素の内側の寸法をピクセル単位で表します。パディングは含みますが、境界、マージン、 (もしあれば) 水平スクロールバーは含みません。

              - -

              clientHeight は CSS height + CSS padding - 水平スクロールバーの高さ(height) (もしあれば) として計算できます。

              - -

              clientHeight がルート要素 (<html> 要素) (または文書が後方互換モードである場合は <body>) に使用された場合、 (スクロールバーを除いた) ビューポートの高さが返されます。これは clientHeight の特例です

              - -
              -

              注: このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。

              -
              - -

              構文

              - -
              var intElemClientHeight = element.clientHeight;
              - -

              intElemClientHeightelementclientHeight をピクセル単位で表す整数値です。 clientHeight プロパティは読み取り専用です。

              - -

              - -

              Image:Dimensions-client.png

              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-clientheight', 'clientHeight')}}{{Spec2("CSSOM View")}}
              - -

              - -

              clientHeight は Internet Explorer オブジェクトモデルで導入されたプロパティです。

              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Element.clientHeight")}}

              - -

              関連情報

              - - diff --git a/files/ja/web/api/element/clientheight/index.md b/files/ja/web/api/element/clientheight/index.md new file mode 100644 index 0000000000..4cde36518d --- /dev/null +++ b/files/ja/web/api/element/clientheight/index.md @@ -0,0 +1,67 @@ +--- +title: Element.clientHeight +slug: Web/API/Element/clientHeight +tags: + - API + - CSSOM View + - NeedsMarkupWork + - Property + - Reference +translation_of: Web/API/Element/clientHeight +--- +
              {{APIRef("DOM")}}
              + +

              Element.clientHeight は読み取り専用のプロパティで、 CSS のない要素やインラインレイアウトボックスではゼロになります。それ以外では、要素の内側の寸法をピクセル単位で表します。パディングは含みますが、境界、マージン、 (もしあれば) 水平スクロールバーは含みません。

              + +

              clientHeight は CSS height + CSS padding - 水平スクロールバーの高さ(height) (もしあれば) として計算できます。

              + +

              clientHeight がルート要素 (<html> 要素) (または文書が後方互換モードである場合は <body>) に使用された場合、 (スクロールバーを除いた) ビューポートの高さが返されます。これは clientHeight の特例です

              + +
              +

              注: このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。

              +
              + +

              構文

              + +
              var intElemClientHeight = element.clientHeight;
              + +

              intElemClientHeightelementclientHeight をピクセル単位で表す整数値です。 clientHeight プロパティは読み取り専用です。

              + +

              + +

              Image:Dimensions-client.png

              + +

              仕様書

              + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-clientheight', 'clientHeight')}}{{Spec2("CSSOM View")}}
              + +

              + +

              clientHeight は Internet Explorer オブジェクトモデルで導入されたプロパティです。

              + +

              ブラウザーの互換性

              + +

              {{Compat("api.Element.clientHeight")}}

              + +

              関連情報

              + + diff --git a/files/ja/web/api/element/clientleft/index.html b/files/ja/web/api/element/clientleft/index.html deleted file mode 100644 index 7a17600640..0000000000 --- a/files/ja/web/api/element/clientleft/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Element.clientLeft -slug: Web/API/Element/clientLeft -tags: -- API -- CSSOM View -- NeedsAgnostify -- NeedsMarkupWork -- Property -- Reference -browser-compat: api.Element.clientLeft -translation_of: Web/API/Element/clientLeft ---- -
              {{ APIRef("DOM") }}
              - -

              要素の左境界の幅をピクセル数で表します。これは、要素の書字方向が右書きで、オーバーフローがある場合、左の垂直スクロールバーがレンダリングされると垂直スクロールバーの幅を含みます。 clientLeft は、左マージンまたは左パディングを含みません。 clientLeft は読み取り専用です。

              - -

              layout.scrollbar.side 設定項目が 1 または 3 に設定されており、書字方向が RTL に設定されている場合、垂直スクロールバーは左側に配置され、これが clientLeft の計算方法に影響します。

              - -
              -

              注: このプロパティは値を整数に丸めます。小数の値が必要な場合は、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。 -

              -
              - -

              - -
              -

              注: 要素に - display: inline が設定されている場合、境界の幅に関わらず clientLeft0 を返します。

              -
              - -

              構文

              - -
              var left = element.clientLeft;
              -
              - -

              - -
              -
              -

              - padding-top

              - -

              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis - nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -

              - -

              Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu - fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in - culpa qui officia deserunt mollit anim id est laborum.

              - -

              - padding-bottom

              -
              - Left - Top - Right - Bottom - margin-top margin-bottom border-top border-bottom -
              - -

              仕様書

              - -{{Specifications}} - -

              ブラウザーの互換性

              - -

              {{Compat}}

              - -

              - -

              clientLeft は MS IE DHTML オブジェクトモデルで最初に導入されました。

              - -

              要素に設定された書字方向が右書きである場合の垂直スクロールバーの位置は、 layout.scrollbar.side の設定に依存します

              - -

              Gecko ベースのアプリケーションは、 clientLeft を Gecko 1.9 (Firefox 3、 {{ - Bug(111207) }} による実装) から実装しました。このプロパティは Firefox 2 以前では対応していません。

              diff --git a/files/ja/web/api/element/clientleft/index.md b/files/ja/web/api/element/clientleft/index.md new file mode 100644 index 0000000000..7a17600640 --- /dev/null +++ b/files/ja/web/api/element/clientleft/index.md @@ -0,0 +1,86 @@ +--- +title: Element.clientLeft +slug: Web/API/Element/clientLeft +tags: +- API +- CSSOM View +- NeedsAgnostify +- NeedsMarkupWork +- Property +- Reference +browser-compat: api.Element.clientLeft +translation_of: Web/API/Element/clientLeft +--- +
              {{ APIRef("DOM") }}
              + +

              要素の左境界の幅をピクセル数で表します。これは、要素の書字方向が右書きで、オーバーフローがある場合、左の垂直スクロールバーがレンダリングされると垂直スクロールバーの幅を含みます。 clientLeft は、左マージンまたは左パディングを含みません。 clientLeft は読み取り専用です。

              + +

              layout.scrollbar.side 設定項目が 1 または 3 に設定されており、書字方向が RTL に設定されている場合、垂直スクロールバーは左側に配置され、これが clientLeft の計算方法に影響します。

              + +
              +

              注: このプロパティは値を整数に丸めます。小数の値が必要な場合は、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。 +

              +
              + +

              + +
              +

              注: 要素に + display: inline が設定されている場合、境界の幅に関わらず clientLeft0 を返します。

              +
              + +

              構文

              + +
              var left = element.clientLeft;
              +
              + +

              + +
              +
              +

              + padding-top

              + +

              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis + nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +

              + +

              Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu + fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in + culpa qui officia deserunt mollit anim id est laborum.

              + +

              + padding-bottom

              +
              + Left + Top + Right + Bottom + margin-top margin-bottom border-top border-bottom +
              + +

              仕様書

              + +{{Specifications}} + +

              ブラウザーの互換性

              + +

              {{Compat}}

              + +

              + +

              clientLeft は MS IE DHTML オブジェクトモデルで最初に導入されました。

              + +

              要素に設定された書字方向が右書きである場合の垂直スクロールバーの位置は、 layout.scrollbar.side の設定に依存します

              + +

              Gecko ベースのアプリケーションは、 clientLeft を Gecko 1.9 (Firefox 3、 {{ + Bug(111207) }} による実装) から実装しました。このプロパティは Firefox 2 以前では対応していません。

              diff --git a/files/ja/web/api/element/clienttop/index.html b/files/ja/web/api/element/clienttop/index.html deleted file mode 100644 index 95ae5ad2b3..0000000000 --- a/files/ja/web/api/element/clienttop/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: element.clientTop -slug: Web/API/Element/clientTop -tags: - - DOM - - Gecko - - Gecko DOM Reference -translation_of: Web/API/Element/clientTop ---- -
              - {{ApiRef}}
              -

              概要

              -

              要素の上ボーダーの幅のピクセル数です。上マージン、及び、上パディングは含みません。clientTop は読込専用です。

              -

              Gecko ベースアプリケーションは、 Gecko 1.9 (Firefox 3、{{Bug("111207")}} で実装) から clientTop をサポートします。このプロパティは、Firefox 2 以前ではサポートされません。

              -

              構文

              -
              top = element.clientTop;
              -
              -

              -
              -
              -

              padding-top

              -

              Gentle, individualistic and very loyal, Birman cats fall between Siamese and Persian in character. If you admire cats that are non aggressive, that enjoy being with humans and tend to be on the quiet side, you may well find that Birman cats are just the felines for you.

              -

              All Birmans have colorpointed features, dark coloration of the face, ears, legs and tail.

              -

              Cat image and text coming from www.best-cat-art.com

              -

              padding-bottom

              -
              - LeftTopRightBottommargin-topmargin-bottomborder-topborder-bottom{{mediawiki.external('if IE')}}><span id="MrgLeft" style="position: absolute; left: 8px; top: 65px; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">margin-left</span><span id="BrdLeft" style="position: absolute; left: 33px; top: 65px; color: white; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">border-left</span><span id="PdgLeft" style="position: absolute; left: 55px; top: 65px; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">padding-left</span><span id="PdgRight" style="position: absolute; left: 275px; top: 60px; color: black; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl; white-space: nowrap;">padding-right</span><span id="BrdRight" style="position: absolute; left: 310px; top: 65px; color: white; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">border-right</span><span id="MrgRight" style="position: absolute; left: 340px; top: 65px; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">margin-right</span><!{{mediawiki.external('endif')}}
              -

              -

              仕様

              -

              W3C の仕様の一部ではありません。

              -

              注記

              -

              clientTop は MS IE DHTML オブジェクトモデルで最初に導入されました。

              -

              リファレンス

              - diff --git a/files/ja/web/api/element/clienttop/index.md b/files/ja/web/api/element/clienttop/index.md new file mode 100644 index 0000000000..95ae5ad2b3 --- /dev/null +++ b/files/ja/web/api/element/clienttop/index.md @@ -0,0 +1,37 @@ +--- +title: element.clientTop +slug: Web/API/Element/clientTop +tags: + - DOM + - Gecko + - Gecko DOM Reference +translation_of: Web/API/Element/clientTop +--- +
              + {{ApiRef}}
              +

              概要

              +

              要素の上ボーダーの幅のピクセル数です。上マージン、及び、上パディングは含みません。clientTop は読込専用です。

              +

              Gecko ベースアプリケーションは、 Gecko 1.9 (Firefox 3、{{Bug("111207")}} で実装) から clientTop をサポートします。このプロパティは、Firefox 2 以前ではサポートされません。

              +

              構文

              +
              top = element.clientTop;
              +
              +

              +
              +
              +

              padding-top

              +

              Gentle, individualistic and very loyal, Birman cats fall between Siamese and Persian in character. If you admire cats that are non aggressive, that enjoy being with humans and tend to be on the quiet side, you may well find that Birman cats are just the felines for you.

              +

              All Birmans have colorpointed features, dark coloration of the face, ears, legs and tail.

              +

              Cat image and text coming from www.best-cat-art.com

              +

              padding-bottom

              +
              + LeftTopRightBottommargin-topmargin-bottomborder-topborder-bottom{{mediawiki.external('if IE')}}><span id="MrgLeft" style="position: absolute; left: 8px; top: 65px; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">margin-left</span><span id="BrdLeft" style="position: absolute; left: 33px; top: 65px; color: white; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">border-left</span><span id="PdgLeft" style="position: absolute; left: 55px; top: 65px; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">padding-left</span><span id="PdgRight" style="position: absolute; left: 275px; top: 60px; color: black; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl; white-space: nowrap;">padding-right</span><span id="BrdRight" style="position: absolute; left: 310px; top: 65px; color: white; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">border-right</span><span id="MrgRight" style="position: absolute; left: 340px; top: 65px; font: bold 13px Arial, sans-serif !important; writing-mode: tb-rl;">margin-right</span><!{{mediawiki.external('endif')}}
              +

              +

              仕様

              +

              W3C の仕様の一部ではありません。

              +

              注記

              +

              clientTop は MS IE DHTML オブジェクトモデルで最初に導入されました。

              +

              リファレンス

              + diff --git a/files/ja/web/api/element/clientwidth/index.html b/files/ja/web/api/element/clientwidth/index.html deleted file mode 100644 index 47753e0077..0000000000 --- a/files/ja/web/api/element/clientwidth/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Element.clientWidth -slug: Web/API/Element/clientWidth -tags: - - API - - CSSOM View - - Property - - Reference - - プロパティ -translation_of: Web/API/Element/clientWidth ---- -
              {{APIRef("DOM")}}
              - -

              Element.clientWidth プロパティは、インライン要素や CSS のない要素ではゼロになります。それ以外では、要素の内側の寸法をピクセル単位で表します。パディングは含みますが、境界、マージン、 (もしあれば) 垂直スクロールバーは含みません。

              - -

              clientWidth がルート要素 (<html> 要素) (または文書が後方互換モードである場合は <body>) に使用された場合、 (スクロールバーの幅を除く) ビューポートの幅が返されます。これは clientWidth の特例です。

              - -
              -

              メモ: このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。

              -
              - -

              構文

              - -
              var intElemClientWidth = element.clientWidth;
              - -

              intElemClientWidthelementclientWidth をピクセル数で表す整数値です。 clientWidth プロパティは読み取り専用です。

              - -

              - -

              Image:Dimensions-client.png

              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-clientwidth', 'clientWidth')}}{{Spec2("CSSOM View")}}
              - -

              メモ

              - -

              clientWidth は MS IE DHTML オブジェクトモデルにおいて初めて導入されました。

              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Element.clientWidth")}}

              - -

              関連情報

              - - diff --git a/files/ja/web/api/element/clientwidth/index.md b/files/ja/web/api/element/clientwidth/index.md new file mode 100644 index 0000000000..47753e0077 --- /dev/null +++ b/files/ja/web/api/element/clientwidth/index.md @@ -0,0 +1,65 @@ +--- +title: Element.clientWidth +slug: Web/API/Element/clientWidth +tags: + - API + - CSSOM View + - Property + - Reference + - プロパティ +translation_of: Web/API/Element/clientWidth +--- +
              {{APIRef("DOM")}}
              + +

              Element.clientWidth プロパティは、インライン要素や CSS のない要素ではゼロになります。それ以外では、要素の内側の寸法をピクセル単位で表します。パディングは含みますが、境界、マージン、 (もしあれば) 垂直スクロールバーは含みません。

              + +

              clientWidth がルート要素 (<html> 要素) (または文書が後方互換モードである場合は <body>) に使用された場合、 (スクロールバーの幅を除く) ビューポートの幅が返されます。これは clientWidth の特例です。

              + +
              +

              メモ: このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。

              +
              + +

              構文

              + +
              var intElemClientWidth = element.clientWidth;
              + +

              intElemClientWidthelementclientWidth をピクセル数で表す整数値です。 clientWidth プロパティは読み取り専用です。

              + +

              + +

              Image:Dimensions-client.png

              + +

              仕様書

              + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-clientwidth', 'clientWidth')}}{{Spec2("CSSOM View")}}
              + +

              メモ

              + +

              clientWidth は MS IE DHTML オブジェクトモデルにおいて初めて導入されました。

              + +

              ブラウザーの互換性

              + +

              {{Compat("api.Element.clientWidth")}}

              + +

              関連情報

              + + diff --git a/files/ja/web/api/element/id/index.html b/files/ja/web/api/element/id/index.html deleted file mode 100644 index 46cf1c1a9e..0000000000 --- a/files/ja/web/api/element/id/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: element.id -slug: Web/API/Element/id -tags: - - DOM - - Gecko -translation_of: Web/API/Element/id ---- -
              {{ApiRef}}
              - -

              概要

              - -

              要素の 識別子 (identifier) を取得 / 設定します。

              - -

              構文

              - -
              idStr =element.id; // 取得
              -element.id = idStr; // 設定
              -
              - -

              注意

              - -

              ID は文書内でユニークでなくてはならず、{{domxref("document.getElementById")}} を使って要素を取り出すために使われることがあります。仮に文法を無視して同一 id の要素が文書内に複数存在する場合、このメソッドは最初の要素を取得します。

              - -

              document によっては(特に HTMLXULSVG)、要素の id は次のような要素の属性として指定することができます: <div id="part_3">.

              - -

              但しカスタム XML 文書に於いては、id 属性の型を DOCTYPE で定められたとおりに正しく指定しなければなりません。詳細については『getElementById Pitfalls (getElementById の落とし穴)』をご覧下さい。

              - -

              id 属性は、スタイルシートでスタイルを適用するために要素を参照する要素でも用いられます。スタイルシート内から特定の要素を参照するには、HTML に指定した id 属性値の先頭に # を付けます。

              - -
              #thisID {
              -  background: darkblue;
              -  color; ghostwhite;
              -}
              - -

              id 属性はケースセンシティブ……即ち、大文字と小文字を区別するという点に注意して下さい。つまり、 "thisID" と "ThisID" は別の id として扱われ、それぞれ別の要素を指し示す識別子となります (参照 : class 属性 / id 属性 / name 属性はケースセンシティブである)

              - -

              仕様

              - - - - - - - - - - - - - - - - -
              仕様書策定状況コメント
              {{SpecName('DOM2 HTML', 'html.html#ID-63534901', 'id')}}{{Spec2('DOM2 HTML')}} 
              - -

               

              diff --git a/files/ja/web/api/element/id/index.md b/files/ja/web/api/element/id/index.md new file mode 100644 index 0000000000..46cf1c1a9e --- /dev/null +++ b/files/ja/web/api/element/id/index.md @@ -0,0 +1,57 @@ +--- +title: element.id +slug: Web/API/Element/id +tags: + - DOM + - Gecko +translation_of: Web/API/Element/id +--- +
              {{ApiRef}}
              + +

              概要

              + +

              要素の 識別子 (identifier) を取得 / 設定します。

              + +

              構文

              + +
              idStr =element.id; // 取得
              +element.id = idStr; // 設定
              +
              + +

              注意

              + +

              ID は文書内でユニークでなくてはならず、{{domxref("document.getElementById")}} を使って要素を取り出すために使われることがあります。仮に文法を無視して同一 id の要素が文書内に複数存在する場合、このメソッドは最初の要素を取得します。

              + +

              document によっては(特に HTMLXULSVG)、要素の id は次のような要素の属性として指定することができます: <div id="part_3">.

              + +

              但しカスタム XML 文書に於いては、id 属性の型を DOCTYPE で定められたとおりに正しく指定しなければなりません。詳細については『getElementById Pitfalls (getElementById の落とし穴)』をご覧下さい。

              + +

              id 属性は、スタイルシートでスタイルを適用するために要素を参照する要素でも用いられます。スタイルシート内から特定の要素を参照するには、HTML に指定した id 属性値の先頭に # を付けます。

              + +
              #thisID {
              +  background: darkblue;
              +  color; ghostwhite;
              +}
              + +

              id 属性はケースセンシティブ……即ち、大文字と小文字を区別するという点に注意して下さい。つまり、 "thisID" と "ThisID" は別の id として扱われ、それぞれ別の要素を指し示す識別子となります (参照 : class 属性 / id 属性 / name 属性はケースセンシティブである)

              + +

              仕様

              + + + + + + + + + + + + + + + + +
              仕様書策定状況コメント
              {{SpecName('DOM2 HTML', 'html.html#ID-63534901', 'id')}}{{Spec2('DOM2 HTML')}} 
              + +

               

              diff --git a/files/ja/web/api/element/innerhtml/index.html b/files/ja/web/api/element/innerhtml/index.html deleted file mode 100644 index bd63262b6c..0000000000 --- a/files/ja/web/api/element/innerhtml/index.html +++ /dev/null @@ -1,213 +0,0 @@ ---- -title: Element.innerHTML -slug: Web/API/Element/innerHTML -tags: - - API - - DOM - - DOM Parsing - - Element - - Parsing HTML - - Property - - Reference - - innerHTML - - プロパティ -browser-compat: api.Element.innerHTML -translation_of: Web/API/Element/innerHTML ---- -
              {{APIRef("DOM")}}
              - -

              {{domxref("Element")}} オブジェクトの innerHTML プロパティは、要素内の HTML または XML のマークアップを取得したり設定したりします。

              - -
              メモ: {{HTMLElement("div")}}, {{HTMLElement("span")}}, {{HTMLElement("noembed")}} ノードが (&), (<), (>) の文字を含むテキストの子ノードを持っている場合、 innerHTML はこれらの文字を HTML エンティティの "&amp;", "&lt;", "&gt;" としてそれぞれ返します。これらのテキストノードの内容の生のコピーを取得するには {{domxref("Node.textContent")}} を使用してください。
              - -

              要素の内容を置き換えるというより、文書に HTML を挿入するという場合には、 {{domxref("Element.insertAdjacentHTML", "insertAdjacentHTML()")}} メソッドを使用してください。

              - -

              構文

              - -
              const content = element.innerHTML;
              -
              -element.innerHTML = htmlString;
              -
              - -

              - -

              要素の子孫を HTML シリアライズしたものを含んだ {{domxref("DOMString")}} です。 innerHTML に値を設定すると、要素のすべての子孫を削除して、 htmlString の文字列で与えられた HTML を解析して構築されたノードに置き換えます。

              - -

              例外

              - -
              -
              SyntaxError
              -
              正しくない形の HTML の文字列を使用して innerHTML の値を設定しようとした場合。
              -
              NoModificationAllowedError
              -
              親が {{domxref("Document")}} であるノードに HTML を挿入しようとした場合。
              -
              - -

              使用上のメモ

              - -

              innerHTML プロパティは、ページの現在の HTML ソースを、ページが最初に読み込まれてから行われたあらゆる変更を含めて、見るために利用することができます。

              - -

              要素の HTML コンテンツの読み取り

              - -

              innerHTML を読み取ると、ユーザーエージェントが要素の子孫で構成される HTML または XML の断片をシリアライズします。結果として文字列が返ります。

              - -
              let contents = myElement.innerHTML;
              - -

              これで、 HTML のコンテンツのノードの HTML マークアップを見ることができます。

              - -
              -

              メモ: 返される HTML または XML の断片は、現在の要素の中身に基づいて生成されますので、返される断片のマークアップや整形方法は、元のページのマークアップと同じであるとは限りません。

              -
              - -

              要素の中身の置き換え

              - -

              innerHTML の値を設定することで、既存の要素の内容を新しい内容に置き換えることが簡単にできます。

              - -

              例えば、文書の {{domxref("Document.body", "body")}} 属性の内容を消去することで、文書の内容全体を消去することができます。

              - -
              document.body.innerHTML = "";
              - -

              この例は文書の現在の HTML マークアップを走査し、 "<" の文字を HTML エンティティの "&lt;" に置き換え、それによって本質的に HTML を生テキストに変換します。そしてこれを {{HTMLElement("pre")}} で囲みます。そして、 innerHTML の値をこの新しい文字列に変更します。結果として、文書の内容がページ全体のソースコードの表示に置き換わります。

              - -
              document.documentElement.innerHTML = "<pre>" +
              -         document.documentElement.innerHTML.replace(/</g,"&lt;") +
              -            "</pre>";
              - -

              操作の詳細

              - -

              innerHTML に値を設定すると、正確には何が起きるのでしょうか?これを行うと、ユーザーエージェントは以下のステップを追います。

              - -
                -
              1. 指定された値は (文書型に基づいて) HTML または XML として解釈され、新しい一連の要素の DOM ノードを表す {{domxref("DocumentFragment")}} オブジェクトの中に結果が入れられます。
              2. -
              3. 中身を置き換えようとしている要素が {{HTMLElement("template")}} 要素である場合は、 <template> 要素の {{domxref("HTMLTemplateElement.content", "content")}} 属性を、ステップ1で生成された新しい DocumentFragment で置き換えます。
              4. -
              5. その他の要素はすべて、要素の内容を新しい DocumentFragment のノードで置き換えます。
              6. -
              - -

              セキュリティの考慮事項

              - -

              ウェブページにテキストを挿入するために innerHTML を使用している例は珍しくありませんありません。これがサイト上の攻撃ベクトルになる可能性があり、潜在的なセキュリティリスクが生じます。

              - -
              const name = "John";
              -// 'el' を HTML の DOM 要素と想定します
              -el.innerHTML = name; // この場合は無害
              -
              -// ...
              -
              -name = "<script>alert('I am John in an annoying alert!')</script>";
              -el.innerHTML = name; // この場合は無害
              - -

              これは{{interwiki("wikipedia", "クロスサイトスクリプティング")}}攻撃のように見えますが、結果的には無害です。 HTML5 では innerHTML で挿入された {{HTMLElement("script")}} タグは実行するべきではないと定義しているからです。

              - -

              しかし、次のように {{HTMLElement("script")}} を使わずに JavaScript を実行する方法もあるので、制御することができない文字列を設定するために innerHTML を使用するたびに、セキュリティリスクは残ります。

              - -
              const name = "<img src='x' onerror='alert(1)'>";
              -el.innerHTML = name; // アラートが表示される
              - -

              このため、プレーンテキストを挿入するときには innerHTML を使用せず、代わりに {{domxref("Node.textContent")}} を使用することをお勧めします。これは渡されたコンテンツを HTML として解釈するのではなく、生テキストとして挿入します。

              - -
              -

              警告: プロジェクトに対して何らかの形のセキュリティレビューが行われる場合、 innerHTML は多くの場合、コードが拒絶される結果になります。例えば、ブラウザー拡張機能の中で innerHTML を使用した場合、拡張機能を addons.mozilla.org に提出すると、自動レビュープロセスを通過できないでしょう。

              -
              - -

              - -

              この例は innerHTML を使用して、ウェブページ上のボックス内にメッセージを記録するメカニズムを作成します。

              - -

              JavaScript

              - -
              function log(msg) {
              -  var logElem = document.querySelector(".log");
              -
              -  var time = new Date();
              -  var timeStr = time.toLocaleTimeString();
              -  logElem.innerHTML += timeStr + ": " + msg + "<br/>";
              -}
              -
              -log("Logging mouse events inside this container...");
              -
              - -

              log() 関数は {{jsxref("Date")}} オブジェクトから {{jsxref("Date.toLocaleTimeString", "toLocaleTimeString()")}} を使用して現在時刻を取得し、タイムスタンプとメッセージテキストから成る文字列を構築してログ出力を生成します。それから "log" クラスのボックスにメッセージを追加します。

              - -

              {{domxref("MouseEvent")}} ベースのイベント ({{event("mousedown")}}, {{event("click")}}, {{event("mouseenter")}} など) についての情報を記録する第二のメソッドを追加します。

              - -
              function logEvent(event) {
              -  var msg = "Event <strong>" + event.type + "</strong> at <em>" +
              -            event.clientX + ", " + event.clientY + "</em>";
              -  log(msg);
              -}
              - -

              それから、これをログを収めるボックスの様々なマウスイベントのイベントハンドラーとして登録します。

              - -
              var boxElem = document.querySelector(".box");
              -
              -boxElem.addEventListener("mousedown", logEvent);
              -boxElem.addEventListener("mouseup", logEvent);
              -boxElem.addEventListener("click", logEvent);
              -boxElem.addEventListener("mouseenter", logEvent);
              -boxElem.addEventListener("mouseleave", logEvent);
              - -

              HTML

              - -

              この例の HTML はとても単純です。

              - -
              <div class="box">
              -  <div><strong>Log:</strong></div>
              -  <div class="log"></div>
              -</div>
              - -

              "box" クラスが付いた {{HTMLElement("div")}} は、単なるレイアウト用途のコンテナーであり、内容とその周りのボックスを表します。クラスが "log" である <div> は、ログテキスト自身のコンテナーです。

              - -

              CSS

              - -

              以下の CSS が例の内容をスタイル付けします。

              - -
              .box {
              -  width: 600px;
              -  height: 300px;
              -  border: 1px solid black;
              -  padding: 2px 4px;
              -  overflow-y: scroll;
              -  overflow-x: auto;
              -}
              -
              -.log {
              -  margin-top: 8px;
              -  font-family: monospace;
              -}
              - -

              結果

              - -

              結果の内容はこのように見えます。マウスが移動してボックスを出入りしたり、中でクリックしたりすると、ログが出力されるのを見ることができます。

              - -

              {{EmbedLiveSample("Example", 640, 350)}}

              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('DOM Parsing', '#dom-element-innerhtml', 'Element.innerHTML')}}{{Spec2('DOM Parsing')}}初回定義
              - -

              ブラウザーの互換性

              - -

              {{Compat}}

              - -

              関連情報

              - -
                -
              • {{domxref("Node.textContent")}} および {{domxref("HTMLElement.innerText")}}
              • -
              • {{domxref("Element.insertAdjacentHTML()")}}
              • -
              • HTML を解析して DOM ツリーへ入れる: {{domxref("DOMParser")}}
              • -
              • XML または HTML をシリアライズして DOM ツリーへ入れる: {{domxref("XMLSerializer")}}
              • -
              diff --git a/files/ja/web/api/element/innerhtml/index.md b/files/ja/web/api/element/innerhtml/index.md new file mode 100644 index 0000000000..bd63262b6c --- /dev/null +++ b/files/ja/web/api/element/innerhtml/index.md @@ -0,0 +1,213 @@ +--- +title: Element.innerHTML +slug: Web/API/Element/innerHTML +tags: + - API + - DOM + - DOM Parsing + - Element + - Parsing HTML + - Property + - Reference + - innerHTML + - プロパティ +browser-compat: api.Element.innerHTML +translation_of: Web/API/Element/innerHTML +--- +
              {{APIRef("DOM")}}
              + +

              {{domxref("Element")}} オブジェクトの innerHTML プロパティは、要素内の HTML または XML のマークアップを取得したり設定したりします。

              + +
              メモ: {{HTMLElement("div")}}, {{HTMLElement("span")}}, {{HTMLElement("noembed")}} ノードが (&), (<), (>) の文字を含むテキストの子ノードを持っている場合、 innerHTML はこれらの文字を HTML エンティティの "&amp;", "&lt;", "&gt;" としてそれぞれ返します。これらのテキストノードの内容の生のコピーを取得するには {{domxref("Node.textContent")}} を使用してください。
              + +

              要素の内容を置き換えるというより、文書に HTML を挿入するという場合には、 {{domxref("Element.insertAdjacentHTML", "insertAdjacentHTML()")}} メソッドを使用してください。

              + +

              構文

              + +
              const content = element.innerHTML;
              +
              +element.innerHTML = htmlString;
              +
              + +

              + +

              要素の子孫を HTML シリアライズしたものを含んだ {{domxref("DOMString")}} です。 innerHTML に値を設定すると、要素のすべての子孫を削除して、 htmlString の文字列で与えられた HTML を解析して構築されたノードに置き換えます。

              + +

              例外

              + +
              +
              SyntaxError
              +
              正しくない形の HTML の文字列を使用して innerHTML の値を設定しようとした場合。
              +
              NoModificationAllowedError
              +
              親が {{domxref("Document")}} であるノードに HTML を挿入しようとした場合。
              +
              + +

              使用上のメモ

              + +

              innerHTML プロパティは、ページの現在の HTML ソースを、ページが最初に読み込まれてから行われたあらゆる変更を含めて、見るために利用することができます。

              + +

              要素の HTML コンテンツの読み取り

              + +

              innerHTML を読み取ると、ユーザーエージェントが要素の子孫で構成される HTML または XML の断片をシリアライズします。結果として文字列が返ります。

              + +
              let contents = myElement.innerHTML;
              + +

              これで、 HTML のコンテンツのノードの HTML マークアップを見ることができます。

              + +
              +

              メモ: 返される HTML または XML の断片は、現在の要素の中身に基づいて生成されますので、返される断片のマークアップや整形方法は、元のページのマークアップと同じであるとは限りません。

              +
              + +

              要素の中身の置き換え

              + +

              innerHTML の値を設定することで、既存の要素の内容を新しい内容に置き換えることが簡単にできます。

              + +

              例えば、文書の {{domxref("Document.body", "body")}} 属性の内容を消去することで、文書の内容全体を消去することができます。

              + +
              document.body.innerHTML = "";
              + +

              この例は文書の現在の HTML マークアップを走査し、 "<" の文字を HTML エンティティの "&lt;" に置き換え、それによって本質的に HTML を生テキストに変換します。そしてこれを {{HTMLElement("pre")}} で囲みます。そして、 innerHTML の値をこの新しい文字列に変更します。結果として、文書の内容がページ全体のソースコードの表示に置き換わります。

              + +
              document.documentElement.innerHTML = "<pre>" +
              +         document.documentElement.innerHTML.replace(/</g,"&lt;") +
              +            "</pre>";
              + +

              操作の詳細

              + +

              innerHTML に値を設定すると、正確には何が起きるのでしょうか?これを行うと、ユーザーエージェントは以下のステップを追います。

              + +
                +
              1. 指定された値は (文書型に基づいて) HTML または XML として解釈され、新しい一連の要素の DOM ノードを表す {{domxref("DocumentFragment")}} オブジェクトの中に結果が入れられます。
              2. +
              3. 中身を置き換えようとしている要素が {{HTMLElement("template")}} 要素である場合は、 <template> 要素の {{domxref("HTMLTemplateElement.content", "content")}} 属性を、ステップ1で生成された新しい DocumentFragment で置き換えます。
              4. +
              5. その他の要素はすべて、要素の内容を新しい DocumentFragment のノードで置き換えます。
              6. +
              + +

              セキュリティの考慮事項

              + +

              ウェブページにテキストを挿入するために innerHTML を使用している例は珍しくありませんありません。これがサイト上の攻撃ベクトルになる可能性があり、潜在的なセキュリティリスクが生じます。

              + +
              const name = "John";
              +// 'el' を HTML の DOM 要素と想定します
              +el.innerHTML = name; // この場合は無害
              +
              +// ...
              +
              +name = "<script>alert('I am John in an annoying alert!')</script>";
              +el.innerHTML = name; // この場合は無害
              + +

              これは{{interwiki("wikipedia", "クロスサイトスクリプティング")}}攻撃のように見えますが、結果的には無害です。 HTML5 では innerHTML で挿入された {{HTMLElement("script")}} タグは実行するべきではないと定義しているからです。

              + +

              しかし、次のように {{HTMLElement("script")}} を使わずに JavaScript を実行する方法もあるので、制御することができない文字列を設定するために innerHTML を使用するたびに、セキュリティリスクは残ります。

              + +
              const name = "<img src='x' onerror='alert(1)'>";
              +el.innerHTML = name; // アラートが表示される
              + +

              このため、プレーンテキストを挿入するときには innerHTML を使用せず、代わりに {{domxref("Node.textContent")}} を使用することをお勧めします。これは渡されたコンテンツを HTML として解釈するのではなく、生テキストとして挿入します。

              + +
              +

              警告: プロジェクトに対して何らかの形のセキュリティレビューが行われる場合、 innerHTML は多くの場合、コードが拒絶される結果になります。例えば、ブラウザー拡張機能の中で innerHTML を使用した場合、拡張機能を addons.mozilla.org に提出すると、自動レビュープロセスを通過できないでしょう。

              +
              + +

              + +

              この例は innerHTML を使用して、ウェブページ上のボックス内にメッセージを記録するメカニズムを作成します。

              + +

              JavaScript

              + +
              function log(msg) {
              +  var logElem = document.querySelector(".log");
              +
              +  var time = new Date();
              +  var timeStr = time.toLocaleTimeString();
              +  logElem.innerHTML += timeStr + ": " + msg + "<br/>";
              +}
              +
              +log("Logging mouse events inside this container...");
              +
              + +

              log() 関数は {{jsxref("Date")}} オブジェクトから {{jsxref("Date.toLocaleTimeString", "toLocaleTimeString()")}} を使用して現在時刻を取得し、タイムスタンプとメッセージテキストから成る文字列を構築してログ出力を生成します。それから "log" クラスのボックスにメッセージを追加します。

              + +

              {{domxref("MouseEvent")}} ベースのイベント ({{event("mousedown")}}, {{event("click")}}, {{event("mouseenter")}} など) についての情報を記録する第二のメソッドを追加します。

              + +
              function logEvent(event) {
              +  var msg = "Event <strong>" + event.type + "</strong> at <em>" +
              +            event.clientX + ", " + event.clientY + "</em>";
              +  log(msg);
              +}
              + +

              それから、これをログを収めるボックスの様々なマウスイベントのイベントハンドラーとして登録します。

              + +
              var boxElem = document.querySelector(".box");
              +
              +boxElem.addEventListener("mousedown", logEvent);
              +boxElem.addEventListener("mouseup", logEvent);
              +boxElem.addEventListener("click", logEvent);
              +boxElem.addEventListener("mouseenter", logEvent);
              +boxElem.addEventListener("mouseleave", logEvent);
              + +

              HTML

              + +

              この例の HTML はとても単純です。

              + +
              <div class="box">
              +  <div><strong>Log:</strong></div>
              +  <div class="log"></div>
              +</div>
              + +

              "box" クラスが付いた {{HTMLElement("div")}} は、単なるレイアウト用途のコンテナーであり、内容とその周りのボックスを表します。クラスが "log" である <div> は、ログテキスト自身のコンテナーです。

              + +

              CSS

              + +

              以下の CSS が例の内容をスタイル付けします。

              + +
              .box {
              +  width: 600px;
              +  height: 300px;
              +  border: 1px solid black;
              +  padding: 2px 4px;
              +  overflow-y: scroll;
              +  overflow-x: auto;
              +}
              +
              +.log {
              +  margin-top: 8px;
              +  font-family: monospace;
              +}
              + +

              結果

              + +

              結果の内容はこのように見えます。マウスが移動してボックスを出入りしたり、中でクリックしたりすると、ログが出力されるのを見ることができます。

              + +

              {{EmbedLiveSample("Example", 640, 350)}}

              + +

              仕様書

              + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName('DOM Parsing', '#dom-element-innerhtml', 'Element.innerHTML')}}{{Spec2('DOM Parsing')}}初回定義
              + +

              ブラウザーの互換性

              + +

              {{Compat}}

              + +

              関連情報

              + +
                +
              • {{domxref("Node.textContent")}} および {{domxref("HTMLElement.innerText")}}
              • +
              • {{domxref("Element.insertAdjacentHTML()")}}
              • +
              • HTML を解析して DOM ツリーへ入れる: {{domxref("DOMParser")}}
              • +
              • XML または HTML をシリアライズして DOM ツリーへ入れる: {{domxref("XMLSerializer")}}
              • +
              diff --git a/files/ja/web/api/element/localname/index.html b/files/ja/web/api/element/localname/index.html deleted file mode 100644 index b92152fbfa..0000000000 --- a/files/ja/web/api/element/localname/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Element.localName -slug: Web/API/Element/localName -tags: -- API -- DOM -- NeedsBrowserCompatibility -- NeedsMobileBrowserCompatibility -- Property -- Reference -browser-compat: api.Element.localName -translation_of: Web/API/Element/localName ---- -
              {{APIRef("DOM")}}
              - -

              Element.localName は読み取り専用プロパティで、要素の修飾名のローカル部分を返します。

              - -

              構文

              - -
              name = element.localName
              -
              - -

              返値

              - -

              要素の修飾名の、ローカル部分を示す {{domxref("DOMString")}} です。 -

              - -

              - -

              (text/xmlapplication/xhtml+xml のような、XML のコンテンツタイプで送出される必要があります。)

              - -
              <html xmlns="http://www.w3.org/1999/xhtml"
              -      xmlns:svg="http://www.w3.org/2000/svg">
              -<head>
              -  <script type="application/javascript"><![CDATA[
              -  function test() {
              -    var text = document.getElementById('text');
              -    var circle = document.getElementById('circle');
              -
              -    text.value = "<svg:circle> has:\n" +
              -                 "localName = '" + circle.localName + "'\n" +
              -                 "namespaceURI = '" + circle.namespaceURI + "'";
              -  }
              -  ]]></script>
              -</head>
              -<body onload="test()">
              -  <svg:svg version="1.1"
              -    width="100px" height="100px"
              -    viewBox="0 0 100 100">
              -    <svg:circle cx="50" cy="50" r="30" style="fill:#aaa" id="circle"/>
              -  </svg:svg>
              -  <textarea id="text" rows="4" cols="55"/>
              -</body>
              -</html>
              -
              - -

              - -

              ノードのローカル名とは、ノードの修飾名の、コロンの後に続く部分です。 XML において修飾名は、一般に特定の XML 文書の名前空間の一部として使われます。例えば、ecomm:partners という修飾名において、 partners はローカル名、ecomm は接頭辞です。

              - -
              <ecomm:business id="soda_shop" type="brick_n_mortar" xmlns:ecomm="http://example.com/ecomm">
              -  <ecomm:partners>
              -    <ecomm:partner id="1001">Tony's Syrup Warehouse
              -    </ecomm:partner>
              -  </ecomm:partner>
              -</ecomm:business>
              -
              - -
              -

              注: {{Gecko("1.9.2")}} 以前、このプロパティは、HTML DOM における HTML 要素ではローカル名を大文字で返していました(XML DOM における XHTML 要素とは対照的に)。最新バージョンでは HTML5 に従い、このプロパティは内部の DOM ストレージの場合、 HTML DOM における HTML要素と XHTML DOM における XHTML要素のいずれも、小文字で返します。{{domxref("element.tagName","tagName")}} プロパティは引き続き、 HTML DOM における HTML 要素では大文字で返します。

              -
              - -

              仕様書

              - -{{Specifications}} - -

              ブラウザーの互換性

              - -

              {{Compat}}

              - -

              関連情報

              - -
                -
              • {{domxref("Element.namespaceURI")}}
              • -
              • {{domxref("Element.prefix")}}
              • -
              • {{domxref("Attr.localName")}}
              • -
              diff --git a/files/ja/web/api/element/localname/index.md b/files/ja/web/api/element/localname/index.md new file mode 100644 index 0000000000..b92152fbfa --- /dev/null +++ b/files/ja/web/api/element/localname/index.md @@ -0,0 +1,87 @@ +--- +title: Element.localName +slug: Web/API/Element/localName +tags: +- API +- DOM +- NeedsBrowserCompatibility +- NeedsMobileBrowserCompatibility +- Property +- Reference +browser-compat: api.Element.localName +translation_of: Web/API/Element/localName +--- +
              {{APIRef("DOM")}}
              + +

              Element.localName は読み取り専用プロパティで、要素の修飾名のローカル部分を返します。

              + +

              構文

              + +
              name = element.localName
              +
              + +

              返値

              + +

              要素の修飾名の、ローカル部分を示す {{domxref("DOMString")}} です。 +

              + +

              + +

              (text/xmlapplication/xhtml+xml のような、XML のコンテンツタイプで送出される必要があります。)

              + +
              <html xmlns="http://www.w3.org/1999/xhtml"
              +      xmlns:svg="http://www.w3.org/2000/svg">
              +<head>
              +  <script type="application/javascript"><![CDATA[
              +  function test() {
              +    var text = document.getElementById('text');
              +    var circle = document.getElementById('circle');
              +
              +    text.value = "<svg:circle> has:\n" +
              +                 "localName = '" + circle.localName + "'\n" +
              +                 "namespaceURI = '" + circle.namespaceURI + "'";
              +  }
              +  ]]></script>
              +</head>
              +<body onload="test()">
              +  <svg:svg version="1.1"
              +    width="100px" height="100px"
              +    viewBox="0 0 100 100">
              +    <svg:circle cx="50" cy="50" r="30" style="fill:#aaa" id="circle"/>
              +  </svg:svg>
              +  <textarea id="text" rows="4" cols="55"/>
              +</body>
              +</html>
              +
              + +

              + +

              ノードのローカル名とは、ノードの修飾名の、コロンの後に続く部分です。 XML において修飾名は、一般に特定の XML 文書の名前空間の一部として使われます。例えば、ecomm:partners という修飾名において、 partners はローカル名、ecomm は接頭辞です。

              + +
              <ecomm:business id="soda_shop" type="brick_n_mortar" xmlns:ecomm="http://example.com/ecomm">
              +  <ecomm:partners>
              +    <ecomm:partner id="1001">Tony's Syrup Warehouse
              +    </ecomm:partner>
              +  </ecomm:partner>
              +</ecomm:business>
              +
              + +
              +

              注: {{Gecko("1.9.2")}} 以前、このプロパティは、HTML DOM における HTML 要素ではローカル名を大文字で返していました(XML DOM における XHTML 要素とは対照的に)。最新バージョンでは HTML5 に従い、このプロパティは内部の DOM ストレージの場合、 HTML DOM における HTML要素と XHTML DOM における XHTML要素のいずれも、小文字で返します。{{domxref("element.tagName","tagName")}} プロパティは引き続き、 HTML DOM における HTML 要素では大文字で返します。

              +
              + +

              仕様書

              + +{{Specifications}} + +

              ブラウザーの互換性

              + +

              {{Compat}}

              + +

              関連情報

              + +
                +
              • {{domxref("Element.namespaceURI")}}
              • +
              • {{domxref("Element.prefix")}}
              • +
              • {{domxref("Attr.localName")}}
              • +
              diff --git a/files/ja/web/api/element/namespaceuri/index.html b/files/ja/web/api/element/namespaceuri/index.html deleted file mode 100644 index ebf84fb77c..0000000000 --- a/files/ja/web/api/element/namespaceuri/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Node.namespaceURI -slug: Web/API/Element/namespaceURI -tags: - - DOM - - Gecko - - Gecko DOM Reference - - 要更新 -translation_of: Web/API/Node/namespaceURI -original_slug: Web/API/Node/namespaceURI ---- -

              {{ ApiRef() }}

              -

              概要

              -

              ノードの名前空間 URI か、もし指定されていなければ null(読み込み専用)。

              -

              構文

              -
              namespace =node.namespaceURI
              -
              -
                -
              • namespace は指定されたノードの名前空間 URI を表す文字列です。
              • -
              -

              -

              この断片では、ノードの localNamenamespaceURI が試験されます。もし、namespaceURI が XUL の名前空間を返し、localName が "browser" を返せば、そのノードは XUL の <browser/> と理解されます。

              -
              if (node.localName == "browser" &&
              -    node.namespaceURI == "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul") {
              -  // これは XUL browser です。
              -}
              -
              -

              注記

              -

              これは、スコープ中の名前空間宣言の調査を基づいた、名前空間検索の結果である、計算された値ではありません。単に作成時に与えられた名前空間 URI です。

              -

              ELEMENT_NODEATTRIBUTE_NODE 以外の種類全てに属すノードと, document.createElement のような DOM Level 1 のメソッドで作られたノードでは、常に namespaceURInull です。

              -

              DOM Level 2 の document.createElementNS メソッドを使うことで、特定の namespaceURI を持った要素を作ることができます。

              -

              Namespaces in XML によれば、属性はその要素から名前空間を継承しません。もし属性が特定の名前空間を与えられていなければ、その属性は名前空間をもちません。

              -

              仕様

              -

              DOM Level 2 Core: namespaceURI

              -

              DOM Level 2 Core: XML Namespaces

              diff --git a/files/ja/web/api/element/namespaceuri/index.md b/files/ja/web/api/element/namespaceuri/index.md new file mode 100644 index 0000000000..ebf84fb77c --- /dev/null +++ b/files/ja/web/api/element/namespaceuri/index.md @@ -0,0 +1,35 @@ +--- +title: Node.namespaceURI +slug: Web/API/Element/namespaceURI +tags: + - DOM + - Gecko + - Gecko DOM Reference + - 要更新 +translation_of: Web/API/Node/namespaceURI +original_slug: Web/API/Node/namespaceURI +--- +

              {{ ApiRef() }}

              +

              概要

              +

              ノードの名前空間 URI か、もし指定されていなければ null(読み込み専用)。

              +

              構文

              +
              namespace =node.namespaceURI
              +
              +
                +
              • namespace は指定されたノードの名前空間 URI を表す文字列です。
              • +
              +

              +

              この断片では、ノードの localNamenamespaceURI が試験されます。もし、namespaceURI が XUL の名前空間を返し、localName が "browser" を返せば、そのノードは XUL の <browser/> と理解されます。

              +
              if (node.localName == "browser" &&
              +    node.namespaceURI == "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul") {
              +  // これは XUL browser です。
              +}
              +
              +

              注記

              +

              これは、スコープ中の名前空間宣言の調査を基づいた、名前空間検索の結果である、計算された値ではありません。単に作成時に与えられた名前空間 URI です。

              +

              ELEMENT_NODEATTRIBUTE_NODE 以外の種類全てに属すノードと, document.createElement のような DOM Level 1 のメソッドで作られたノードでは、常に namespaceURInull です。

              +

              DOM Level 2 の document.createElementNS メソッドを使うことで、特定の namespaceURI を持った要素を作ることができます。

              +

              Namespaces in XML によれば、属性はその要素から名前空間を継承しません。もし属性が特定の名前空間を与えられていなければ、その属性は名前空間をもちません。

              +

              仕様

              +

              DOM Level 2 Core: namespaceURI

              +

              DOM Level 2 Core: XML Namespaces

              diff --git a/files/ja/web/api/element/outerhtml/index.html b/files/ja/web/api/element/outerhtml/index.html deleted file mode 100644 index 1b476879bf..0000000000 --- a/files/ja/web/api/element/outerhtml/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Element.outerHTML -slug: Web/API/Element/outerHTML -tags: - - API - - DOM - - DOM Parsing - - Element - - Parsing - - Property - - Reference - - Serialization - - Serializing - - outerHTML -translation_of: Web/API/Element/outerHTML ---- -
              {{APIRef("DOM")}}
              - -

              outerHTML は {{ domxref("Element") }} DOM インターフェイスの属性で、要素とその子孫を含む部分の HTML がシリアライズされたものを取得します。設定することで指定された文字列を解釈したノードの要素に置き換えることができます。

              - -

              要素の内容のみの HTML 表現を取得する場合や、要素の内容を置き換える場合であれば、代わりに {{domxref("Element.innerHTML", "innerHTML")}} プロパティを使用してください。

              - -

              構文

              - -
              var content = element.outerHTML;
              -
              -element.outerHTML = htmlString;
              -
              - -

              - -

              outerHTML の値を読み取ると、 element およびその子孫の HTML シリアライズを含む {{domxref("DOMString")}} が返されます。 outerHTML の値を設定すると、その要素とそのすべての子孫を、指定された htmlString を解釈して構築された新しい DOM ツリーで置き換えます。

              - -

              例外

              - -
              -
              SyntaxError
              -
              outerHTML に正しくない HTML の文字列を使用して設定しようとした場合。
              -
              NoModificationAllowedError
              -
              outerHTML を {{domxref("Document")}} の直接の子である要素、たとえば {{domxref("Document.documentElement")}} に対して設定しようとした場合。
              -
              - -

              - -

              要素の outerHTML プロパティの値を得る例を示します。

              - -
              // HTML:
              -// <div id="d"><p>Content</p><p>Further Elaborated</p></div>
              -
              -d = document.getElementById("d");
              -console.log(d.outerHTML);
              -
              -// 次の文字列 '<div id="d"><p>Content</p><p>Further Elaborated</p></div>'
              -// が、コンソールウィンドウに出力されます。
              -
              - -

              次の例では、 outerHTML プロパティに値を設定し、ノードを置換します。

              - -
              // HTML:
              -// <div id="container"><div id="d">This is a div.</div></div>
              -
              -container = document.getElementById("container");
              -d = document.getElementById("d");
              -console.log(container.firstChild.nodeName); // "DIV" が記録される
              -
              -d.outerHTML = "<p>This paragraph replaced the original div.</p>";
              -console.log(container.firstChild.nodeName); // "P" が記録される
              -
              -// #d の div 要素はもはや文書ツリーの一部ではなく、
              -// 新たな段落に置き換えられました。
              -
              - -

              メモ

              - -

              要素が親要素を持たない場合、その outerHTML プロパティに値を設定してもその要素や子孫は変更されません。多くのブラウザーでは例外も発生します。以下に例を示します。

              - -
              var div = document.createElement("div");
              -div.outerHTML = "<div class=\"test\">test</div>";
              -console.log(div.outerHTML); // output: "<div></div>"
              - -

              また、文書の中で要素が置換された場合も、 outerHTML プロパティが設定された変数は、引き続きオリジナルの要素への参照を保持しています。

              - -
              var p = document.getElementsByTagName("p")[0];
              -console.log(p.nodeName); // "P" を表示
              -p.outerHTML = "<div>This div replaced a paragraph.</div>";
              -console.log(p.nodeName); // "P" のまま
              -
              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('DOM Parsing', '#outerhtml', 'Element.outerHTML')}}{{ Spec2('DOM Parsing') }} 
              - -

              ブラウザーの対応

              - -

              {{Compat("api.Element.outerHTML")}}

              - -

              関連情報

              - -
                -
              • DOM ツリーを XML または HTML にシリアライズ: {{domxref("XMLSerializer")}}
              • -
              • XML または HTML を DOM ツリーに解釈: {{domxref("DOMParser")}}
              • -
              • {{domxref("HTMLElement.outerText")}}
              • -
              diff --git a/files/ja/web/api/element/outerhtml/index.md b/files/ja/web/api/element/outerhtml/index.md new file mode 100644 index 0000000000..1b476879bf --- /dev/null +++ b/files/ja/web/api/element/outerhtml/index.md @@ -0,0 +1,118 @@ +--- +title: Element.outerHTML +slug: Web/API/Element/outerHTML +tags: + - API + - DOM + - DOM Parsing + - Element + - Parsing + - Property + - Reference + - Serialization + - Serializing + - outerHTML +translation_of: Web/API/Element/outerHTML +--- +
              {{APIRef("DOM")}}
              + +

              outerHTML は {{ domxref("Element") }} DOM インターフェイスの属性で、要素とその子孫を含む部分の HTML がシリアライズされたものを取得します。設定することで指定された文字列を解釈したノードの要素に置き換えることができます。

              + +

              要素の内容のみの HTML 表現を取得する場合や、要素の内容を置き換える場合であれば、代わりに {{domxref("Element.innerHTML", "innerHTML")}} プロパティを使用してください。

              + +

              構文

              + +
              var content = element.outerHTML;
              +
              +element.outerHTML = htmlString;
              +
              + +

              + +

              outerHTML の値を読み取ると、 element およびその子孫の HTML シリアライズを含む {{domxref("DOMString")}} が返されます。 outerHTML の値を設定すると、その要素とそのすべての子孫を、指定された htmlString を解釈して構築された新しい DOM ツリーで置き換えます。

              + +

              例外

              + +
              +
              SyntaxError
              +
              outerHTML に正しくない HTML の文字列を使用して設定しようとした場合。
              +
              NoModificationAllowedError
              +
              outerHTML を {{domxref("Document")}} の直接の子である要素、たとえば {{domxref("Document.documentElement")}} に対して設定しようとした場合。
              +
              + +

              + +

              要素の outerHTML プロパティの値を得る例を示します。

              + +
              // HTML:
              +// <div id="d"><p>Content</p><p>Further Elaborated</p></div>
              +
              +d = document.getElementById("d");
              +console.log(d.outerHTML);
              +
              +// 次の文字列 '<div id="d"><p>Content</p><p>Further Elaborated</p></div>'
              +// が、コンソールウィンドウに出力されます。
              +
              + +

              次の例では、 outerHTML プロパティに値を設定し、ノードを置換します。

              + +
              // HTML:
              +// <div id="container"><div id="d">This is a div.</div></div>
              +
              +container = document.getElementById("container");
              +d = document.getElementById("d");
              +console.log(container.firstChild.nodeName); // "DIV" が記録される
              +
              +d.outerHTML = "<p>This paragraph replaced the original div.</p>";
              +console.log(container.firstChild.nodeName); // "P" が記録される
              +
              +// #d の div 要素はもはや文書ツリーの一部ではなく、
              +// 新たな段落に置き換えられました。
              +
              + +

              メモ

              + +

              要素が親要素を持たない場合、その outerHTML プロパティに値を設定してもその要素や子孫は変更されません。多くのブラウザーでは例外も発生します。以下に例を示します。

              + +
              var div = document.createElement("div");
              +div.outerHTML = "<div class=\"test\">test</div>";
              +console.log(div.outerHTML); // output: "<div></div>"
              + +

              また、文書の中で要素が置換された場合も、 outerHTML プロパティが設定された変数は、引き続きオリジナルの要素への参照を保持しています。

              + +
              var p = document.getElementsByTagName("p")[0];
              +console.log(p.nodeName); // "P" を表示
              +p.outerHTML = "<div>This div replaced a paragraph.</div>";
              +console.log(p.nodeName); // "P" のまま
              +
              + +

              仕様書

              + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName('DOM Parsing', '#outerhtml', 'Element.outerHTML')}}{{ Spec2('DOM Parsing') }} 
              + +

              ブラウザーの対応

              + +

              {{Compat("api.Element.outerHTML")}}

              + +

              関連情報

              + +
                +
              • DOM ツリーを XML または HTML にシリアライズ: {{domxref("XMLSerializer")}}
              • +
              • XML または HTML を DOM ツリーに解釈: {{domxref("DOMParser")}}
              • +
              • {{domxref("HTMLElement.outerText")}}
              • +
              diff --git a/files/ja/web/api/element/prefix/index.html b/files/ja/web/api/element/prefix/index.html deleted file mode 100644 index b2baf67888..0000000000 --- a/files/ja/web/api/element/prefix/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Element.prefix -slug: Web/API/Element/prefix -tags: -- API -- DOM -- NeedsBrowserCompatibility -- NeedsMobileBrowserCompatibility -- Property -- Reference -browser-compat: api.Element.prefix -translation_of: Web/API/Element/prefix ---- -
              {{APIRef("DOM")}}
              - -

              Element.prefix は読み取り専用プロパティで、指定された要素の名前空間の接頭辞を、接頭辞が指定されていない場合は null を返します。

              - -

              構文

              - -
              string = element.prefix
              -
              - -

              - -

              次の例はコンソールに "x" を記録します。

              - -
              <x:div onclick="console.log(this.prefix)"/>
              -
              - -

              - -

              これは、名前空間を認識するパーサーを使用しているとき、すなわち、文書が XML の MIME タイプで送信されたときのみ動作します。 HTML 文書では動作しません。

              - -

              仕様書

              - -{{Specifications}} - -

              ブラウザーの互換性

              - -

              {{Compat}}

              - -

              関連情報

              - -
                -
              • {{domxref("Element.namespaceURI")}}
              • -
              • {{domxref("Element.localName")}}
              • -
              • {{domxref("Attr.prefix")}}
              • -
              diff --git a/files/ja/web/api/element/prefix/index.md b/files/ja/web/api/element/prefix/index.md new file mode 100644 index 0000000000..b2baf67888 --- /dev/null +++ b/files/ja/web/api/element/prefix/index.md @@ -0,0 +1,48 @@ +--- +title: Element.prefix +slug: Web/API/Element/prefix +tags: +- API +- DOM +- NeedsBrowserCompatibility +- NeedsMobileBrowserCompatibility +- Property +- Reference +browser-compat: api.Element.prefix +translation_of: Web/API/Element/prefix +--- +
              {{APIRef("DOM")}}
              + +

              Element.prefix は読み取り専用プロパティで、指定された要素の名前空間の接頭辞を、接頭辞が指定されていない場合は null を返します。

              + +

              構文

              + +
              string = element.prefix
              +
              + +

              + +

              次の例はコンソールに "x" を記録します。

              + +
              <x:div onclick="console.log(this.prefix)"/>
              +
              + +

              + +

              これは、名前空間を認識するパーサーを使用しているとき、すなわち、文書が XML の MIME タイプで送信されたときのみ動作します。 HTML 文書では動作しません。

              + +

              仕様書

              + +{{Specifications}} + +

              ブラウザーの互換性

              + +

              {{Compat}}

              + +

              関連情報

              + +
                +
              • {{domxref("Element.namespaceURI")}}
              • +
              • {{domxref("Element.localName")}}
              • +
              • {{domxref("Attr.prefix")}}
              • +
              diff --git a/files/ja/web/api/element/scrollheight/index.html b/files/ja/web/api/element/scrollheight/index.html deleted file mode 100644 index a2146b9db5..0000000000 --- a/files/ja/web/api/element/scrollheight/index.html +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Element.scrollHeight -slug: Web/API/Element/scrollHeight -tags: - - API - - CSSOM View - - NeedsDHTMLRemovalInExample - - Property - - Reference -translation_of: Web/API/Element/scrollHeight ---- -
              {{APIRef("DOM")}}
              - -

              Element.scrollHeight は読み取り専用のプロパティで、あふれて画面上に表示されない部分を含めた、要素の中身の高さの寸法です。

              - -

              scrollHeight の値は、垂直スクロールバーを使用せずにすべてのコンテンツをビューポート内に収めるために要素に必要な最小の高さに等しくなります。高さは {{domxref("Element.clientHeight", "clientHeight")}} と同じ方法で測定されます。要素のパディングは含みますが、境界線、マージン、 (もしあれば) 水平スクロールバーは含みません。これには {{cssxref("::before")}} または {{cssxref("::after")}} のような擬似要素の高さを含むことがあります。要素の内容が垂直スクロールバーを表示することなく収まる場合、その scrollHeight は {{domxref("Element.clientHeight", "clientHeight")}} と等しくなります。

              - -
              -

              このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("Element.getBoundingClientRect()") }} を使用してください。

              -
              - -

              構文

              - -
              elemScrollHeight = element.scrollHeight;
              - -

              - -

              整数値で、要素の scrollHeight ピクセル値に対応します。

              - -

              - -
              -
              -

              padding-top

              - -

              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

              - -

              Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

              - -

              padding-bottom

              -
              -Left Top Right Bottom margin-top margin-bottom border-top border-bottom
              - -

              Image:scrollHeight.png

              - -

              問題と解決方法

              - -

              要素が完全にスクロールされたかどうかを判定する

              - -

              次の等式は、要素がスクロールの終点にあると true になり、それ以外は false になります。

              - -
              element.scrollHeight - element.scrollTop === element.clientHeight
              -
              - -

              コンテナーは、スクロールしないがオーバーフローする子要素を持つ場合、次の条件式はコンテナーがスクロールできるかどうかを判定します。

              - -
              window.getComputedStyle(element).overflowY === 'visible'
              -window.getComputedStyle(element).overflowY !== 'hidden'
              -
              - -

              scrollHeight のデモ

              - -

              {{domxref("GlobalEventHandlers/onscroll", "onscroll")}} イベントに関連付けることで、この等価性はユーザーがテキストを読んだかどうかを判断するのに役立ちます ({{domxref("element.scrollTop")}} および {{domxref("element.clientHeight")}} プロパティも参照してください)。例:

              - -

              HTML

              - -
              <form name="registration">
              -  <p>
              -    <textarea id="rules">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at laoreet magna.
              -Aliquam erat volutpat. Praesent molestie, dolor ut eleifend aliquam, mi ligula ultrices sapien, quis cursus
              -neque dui nec risus. Duis tincidunt lobortis purus eu aliquet. Quisque in dignissim magna. Aenean ac lorem at
              -velit ultrices consequat. Nulla luctus nisi ut libero cursus ultrices. Pellentesque nec dignissim enim. Phasellus
              -ut quam lacus, sed ultricies diam. Vestibulum convallis rutrum dolor, sit amet egestas velit scelerisque id.
              -Proin non dignissim nisl. Sed mi odio, ullamcorper eget mattis id, malesuada vitae libero. Integer dolor lorem,
              -mattis sed dapibus a, faucibus id metus. Duis iaculis dictum pulvinar. In nisi nibh, dapibus ac blandit at, porta
              -at arcu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent
              -dictum ipsum aliquet erat eleifend sit amet sollicitudin felis tempus. Aliquam congue cursus venenatis. Maecenas
              -luctus pellentesque placerat. Mauris nisl odio, condimentum sed fringilla a, consectetur id ligula. Praesent sem
              -sem, aliquet non faucibus vitae, iaculis nec elit. Nullam volutpat, lectus et blandit bibendum, nulla lorem congue
              -turpis, ac pretium tortor sem ut nibh. Donec vel mi in ligula hendrerit sagittis. Donec faucibus viverra fermentum.
              -Fusce in arcu arcu. Nullam at dignissim massa. Cras nibh est, pretium sit amet faucibus eget, sollicitudin in
              -ligula. Vivamus vitae urna mauris, eget euismod nunc. Aenean semper gravida enim non feugiat. In hac habitasse
              -platea dictumst. Cras eleifend nisl volutpat ante condimentum convallis. Donec varius dolor malesuada erat
              -consequat congue. Donec eu lacus ut sapien venenatis tincidunt. Quisque sit amet tellus et enim bibendum varius et
              -a orci. Donec aliquet volutpat scelerisque. Proin et tortor dolor. Ut aliquet, dolor a mattis sodales, odio diam
              -pulvinar sem, egestas pretium magna eros vitae felis. Nam vitae magna lectus, et ornare elit. Morbi feugiat, ipsum
              -ac mattis congue, quam neque mollis tortor, nec mollis nisl dolor a tortor. Maecenas varius est sit amet elit
              -interdum quis placerat metus posuere. Duis malesuada justo a diam vestibulum vel aliquam nisi ornare. Integer
              -laoreet nisi a odio ornare non congue turpis eleifend. Cum sociis natoque penatibus et magnis dis parturient montes,
              -nascetur ridiculus mus. Cras vulputate libero sed arcu iaculis nec lobortis orci fermentum.
              -    </textarea>
              -  </p>
              -  <p>
              -    <input type="checkbox" id="agree" name="accept" />
              -    <label for="agree">I agree</label>
              -    <input type="submit" id="nextstep" value="Next" />
              -  </p>
              -</form>
              - -

              CSS

              - -
              #notice {
              -  display: inline-block;
              -  margin-bottom: 12px;
              -  border-radius: 5px;
              -  width: 600px;
              -  padding: 5px;
              -  border: 2px #7FDF55 solid;
              -}
              -
              -#rules {
              -  width: 600px;
              -  height: 130px;
              -  padding: 5px;
              -  border: #2A9F00 solid 2px;
              -  border-radius: 5px;
              -}
              - -

              JavaScript

              - -
              function checkReading () {
              -  if (checkReading.read) {
              -    return;
              -  }
              -  checkReading.read = this.scrollHeight - this.scrollTop === this.clientHeight;
              -  document.registration.accept.disabled = document.getElementById("nextstep").disabled = !checkReading.read;
              -  checkReading.noticeBox.innerHTML = checkReading.read ? "Thank you." : "Please, scroll and read the following text.";
              -}
              -
              -onload = function () {
              -  var oToBeRead = document.getElementById("rules");
              -  checkReading.noticeBox = document.createElement("span");
              -  document.registration.accept.checked = false;
              -  checkReading.noticeBox.id = "notice";
              -  oToBeRead.parentNode.insertBefore(checkReading.noticeBox, oToBeRead);
              -  oToBeRead.parentNode.insertBefore(document.createElement("br"), oToBeRead);
              -  oToBeRead.onscroll = checkReading;
              -  checkReading.call(oToBeRead);
              -}
              - -

              {{EmbedLiveSample('scrollHeight_Demo', '640', '400')}}

              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName("CSSOM View", "#dom-element-scrollheight", "Element.scrollHeight")}}{{Spec2("CSSOM View")}}初回定義
              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Element.scrollHeight")}}

              - -

              関連情報

              - - diff --git a/files/ja/web/api/element/scrollheight/index.md b/files/ja/web/api/element/scrollheight/index.md new file mode 100644 index 0000000000..a2146b9db5 --- /dev/null +++ b/files/ja/web/api/element/scrollheight/index.md @@ -0,0 +1,173 @@ +--- +title: Element.scrollHeight +slug: Web/API/Element/scrollHeight +tags: + - API + - CSSOM View + - NeedsDHTMLRemovalInExample + - Property + - Reference +translation_of: Web/API/Element/scrollHeight +--- +
              {{APIRef("DOM")}}
              + +

              Element.scrollHeight は読み取り専用のプロパティで、あふれて画面上に表示されない部分を含めた、要素の中身の高さの寸法です。

              + +

              scrollHeight の値は、垂直スクロールバーを使用せずにすべてのコンテンツをビューポート内に収めるために要素に必要な最小の高さに等しくなります。高さは {{domxref("Element.clientHeight", "clientHeight")}} と同じ方法で測定されます。要素のパディングは含みますが、境界線、マージン、 (もしあれば) 水平スクロールバーは含みません。これには {{cssxref("::before")}} または {{cssxref("::after")}} のような擬似要素の高さを含むことがあります。要素の内容が垂直スクロールバーを表示することなく収まる場合、その scrollHeight は {{domxref("Element.clientHeight", "clientHeight")}} と等しくなります。

              + +
              +

              このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("Element.getBoundingClientRect()") }} を使用してください。

              +
              + +

              構文

              + +
              elemScrollHeight = element.scrollHeight;
              + +

              + +

              整数値で、要素の scrollHeight ピクセル値に対応します。

              + +

              + +
              +
              +

              padding-top

              + +

              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

              + +

              Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

              + +

              padding-bottom

              +
              +Left Top Right Bottom margin-top margin-bottom border-top border-bottom
              + +

              Image:scrollHeight.png

              + +

              問題と解決方法

              + +

              要素が完全にスクロールされたかどうかを判定する

              + +

              次の等式は、要素がスクロールの終点にあると true になり、それ以外は false になります。

              + +
              element.scrollHeight - element.scrollTop === element.clientHeight
              +
              + +

              コンテナーは、スクロールしないがオーバーフローする子要素を持つ場合、次の条件式はコンテナーがスクロールできるかどうかを判定します。

              + +
              window.getComputedStyle(element).overflowY === 'visible'
              +window.getComputedStyle(element).overflowY !== 'hidden'
              +
              + +

              scrollHeight のデモ

              + +

              {{domxref("GlobalEventHandlers/onscroll", "onscroll")}} イベントに関連付けることで、この等価性はユーザーがテキストを読んだかどうかを判断するのに役立ちます ({{domxref("element.scrollTop")}} および {{domxref("element.clientHeight")}} プロパティも参照してください)。例:

              + +

              HTML

              + +
              <form name="registration">
              +  <p>
              +    <textarea id="rules">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at laoreet magna.
              +Aliquam erat volutpat. Praesent molestie, dolor ut eleifend aliquam, mi ligula ultrices sapien, quis cursus
              +neque dui nec risus. Duis tincidunt lobortis purus eu aliquet. Quisque in dignissim magna. Aenean ac lorem at
              +velit ultrices consequat. Nulla luctus nisi ut libero cursus ultrices. Pellentesque nec dignissim enim. Phasellus
              +ut quam lacus, sed ultricies diam. Vestibulum convallis rutrum dolor, sit amet egestas velit scelerisque id.
              +Proin non dignissim nisl. Sed mi odio, ullamcorper eget mattis id, malesuada vitae libero. Integer dolor lorem,
              +mattis sed dapibus a, faucibus id metus. Duis iaculis dictum pulvinar. In nisi nibh, dapibus ac blandit at, porta
              +at arcu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent
              +dictum ipsum aliquet erat eleifend sit amet sollicitudin felis tempus. Aliquam congue cursus venenatis. Maecenas
              +luctus pellentesque placerat. Mauris nisl odio, condimentum sed fringilla a, consectetur id ligula. Praesent sem
              +sem, aliquet non faucibus vitae, iaculis nec elit. Nullam volutpat, lectus et blandit bibendum, nulla lorem congue
              +turpis, ac pretium tortor sem ut nibh. Donec vel mi in ligula hendrerit sagittis. Donec faucibus viverra fermentum.
              +Fusce in arcu arcu. Nullam at dignissim massa. Cras nibh est, pretium sit amet faucibus eget, sollicitudin in
              +ligula. Vivamus vitae urna mauris, eget euismod nunc. Aenean semper gravida enim non feugiat. In hac habitasse
              +platea dictumst. Cras eleifend nisl volutpat ante condimentum convallis. Donec varius dolor malesuada erat
              +consequat congue. Donec eu lacus ut sapien venenatis tincidunt. Quisque sit amet tellus et enim bibendum varius et
              +a orci. Donec aliquet volutpat scelerisque. Proin et tortor dolor. Ut aliquet, dolor a mattis sodales, odio diam
              +pulvinar sem, egestas pretium magna eros vitae felis. Nam vitae magna lectus, et ornare elit. Morbi feugiat, ipsum
              +ac mattis congue, quam neque mollis tortor, nec mollis nisl dolor a tortor. Maecenas varius est sit amet elit
              +interdum quis placerat metus posuere. Duis malesuada justo a diam vestibulum vel aliquam nisi ornare. Integer
              +laoreet nisi a odio ornare non congue turpis eleifend. Cum sociis natoque penatibus et magnis dis parturient montes,
              +nascetur ridiculus mus. Cras vulputate libero sed arcu iaculis nec lobortis orci fermentum.
              +    </textarea>
              +  </p>
              +  <p>
              +    <input type="checkbox" id="agree" name="accept" />
              +    <label for="agree">I agree</label>
              +    <input type="submit" id="nextstep" value="Next" />
              +  </p>
              +</form>
              + +

              CSS

              + +
              #notice {
              +  display: inline-block;
              +  margin-bottom: 12px;
              +  border-radius: 5px;
              +  width: 600px;
              +  padding: 5px;
              +  border: 2px #7FDF55 solid;
              +}
              +
              +#rules {
              +  width: 600px;
              +  height: 130px;
              +  padding: 5px;
              +  border: #2A9F00 solid 2px;
              +  border-radius: 5px;
              +}
              + +

              JavaScript

              + +
              function checkReading () {
              +  if (checkReading.read) {
              +    return;
              +  }
              +  checkReading.read = this.scrollHeight - this.scrollTop === this.clientHeight;
              +  document.registration.accept.disabled = document.getElementById("nextstep").disabled = !checkReading.read;
              +  checkReading.noticeBox.innerHTML = checkReading.read ? "Thank you." : "Please, scroll and read the following text.";
              +}
              +
              +onload = function () {
              +  var oToBeRead = document.getElementById("rules");
              +  checkReading.noticeBox = document.createElement("span");
              +  document.registration.accept.checked = false;
              +  checkReading.noticeBox.id = "notice";
              +  oToBeRead.parentNode.insertBefore(checkReading.noticeBox, oToBeRead);
              +  oToBeRead.parentNode.insertBefore(document.createElement("br"), oToBeRead);
              +  oToBeRead.onscroll = checkReading;
              +  checkReading.call(oToBeRead);
              +}
              + +

              {{EmbedLiveSample('scrollHeight_Demo', '640', '400')}}

              + +

              仕様書

              + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName("CSSOM View", "#dom-element-scrollheight", "Element.scrollHeight")}}{{Spec2("CSSOM View")}}初回定義
              + +

              ブラウザーの互換性

              + +

              {{Compat("api.Element.scrollHeight")}}

              + +

              関連情報

              + + diff --git a/files/ja/web/api/element/scrollleft/index.html b/files/ja/web/api/element/scrollleft/index.html deleted file mode 100644 index 4a593af238..0000000000 --- a/files/ja/web/api/element/scrollleft/index.html +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Element.scrollLeft -slug: Web/API/Element/scrollLeft -tags: - - API - - CSSOM View - - Property - - Reference - - プロパティ -translation_of: Web/API/Element/scrollLeft ---- -
              {{APIRef("DOM")}}
              - -

              Element.scrollLeft プロパティは、要素の内容が左端からスクロールするピクセル数を取得または設定します。

              - -

              要素の {{cssxref("direction")}} が rtl (right-to-left、右書き) の場合、 scrollLeft0 のときにスクロールバーが右端の位置 (スクロールする内容の開始位置) にあり、コンテンツの末尾にスクロールするにつれて、負の数が増加していきます。

              - -
              -

              画面拡大を使用するシステムでは、 scrollLeft が小数になることがあります。

              -
              - -

              構文

              - -

              値の取得

              - -
              // スクロールしたピクセル数を取得
              -var sLeft = element.scrollLeft;
              -
              - -

              sLeftelement が左端からスクロールしたピクセル数を整数で表現したものです。

              - -

              値の設定

              - -
              // スクロールしたピクセル数を設定
              -element.scrollLeft = 10;
              -
              - -

              scrollLeft は任意の整数値で設定することができます。しかし、

              - -
                -
              • 要素がスクロールできない場合 (例えば、はみ出した部分がない場合)、 scrollLeft0 に設定されます。
              • -
              • 指定された値が 0 より小さかったら (右書きの要素では 0 より大きかったら)、 scrollLeft0 に設定されます。
              • -
              • 指定された値が、コンテンツがスクロールできる最大値を超えていたら、 scrollLeft は最大値に設定されます。
              • -
              - -

              - -

              HTML

              - -
              <div id="container">
              -  <div id="content">ボタンをクリックすると右にスライドします。</div>
              -</div>
              -
              -<button id="slide" type="button">右へスライド</button>
              - -

              CSS

              - -
              #container {
              -  width: 100px;
              -  height: 100px;
              -  border: 1px solid #ccc;
              -  overflow-x: scroll;
              -}
              -
              -#content {
              -  width: 250px;
              -  background-color: #ccc;
              -}
              - -

              JavaScript

              - -
              const button = document.getElementById('slide');
              -
              -button.onclick = function () {
              -  document.getElementById('container').scrollLeft += 20;
              -};
              - -

              結果

              - -

              {{EmbedLiveSample("Example")}}

              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-scrollleft', 'scrollLeft')}}{{Spec2("CSSOM View")}}
              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Element.scrollLeft")}}

              - -

              関連情報

              - - diff --git a/files/ja/web/api/element/scrollleft/index.md b/files/ja/web/api/element/scrollleft/index.md new file mode 100644 index 0000000000..4a593af238 --- /dev/null +++ b/files/ja/web/api/element/scrollleft/index.md @@ -0,0 +1,111 @@ +--- +title: Element.scrollLeft +slug: Web/API/Element/scrollLeft +tags: + - API + - CSSOM View + - Property + - Reference + - プロパティ +translation_of: Web/API/Element/scrollLeft +--- +
              {{APIRef("DOM")}}
              + +

              Element.scrollLeft プロパティは、要素の内容が左端からスクロールするピクセル数を取得または設定します。

              + +

              要素の {{cssxref("direction")}} が rtl (right-to-left、右書き) の場合、 scrollLeft0 のときにスクロールバーが右端の位置 (スクロールする内容の開始位置) にあり、コンテンツの末尾にスクロールするにつれて、負の数が増加していきます。

              + +
              +

              画面拡大を使用するシステムでは、 scrollLeft が小数になることがあります。

              +
              + +

              構文

              + +

              値の取得

              + +
              // スクロールしたピクセル数を取得
              +var sLeft = element.scrollLeft;
              +
              + +

              sLeftelement が左端からスクロールしたピクセル数を整数で表現したものです。

              + +

              値の設定

              + +
              // スクロールしたピクセル数を設定
              +element.scrollLeft = 10;
              +
              + +

              scrollLeft は任意の整数値で設定することができます。しかし、

              + +
                +
              • 要素がスクロールできない場合 (例えば、はみ出した部分がない場合)、 scrollLeft0 に設定されます。
              • +
              • 指定された値が 0 より小さかったら (右書きの要素では 0 より大きかったら)、 scrollLeft0 に設定されます。
              • +
              • 指定された値が、コンテンツがスクロールできる最大値を超えていたら、 scrollLeft は最大値に設定されます。
              • +
              + +

              + +

              HTML

              + +
              <div id="container">
              +  <div id="content">ボタンをクリックすると右にスライドします。</div>
              +</div>
              +
              +<button id="slide" type="button">右へスライド</button>
              + +

              CSS

              + +
              #container {
              +  width: 100px;
              +  height: 100px;
              +  border: 1px solid #ccc;
              +  overflow-x: scroll;
              +}
              +
              +#content {
              +  width: 250px;
              +  background-color: #ccc;
              +}
              + +

              JavaScript

              + +
              const button = document.getElementById('slide');
              +
              +button.onclick = function () {
              +  document.getElementById('container').scrollLeft += 20;
              +};
              + +

              結果

              + +

              {{EmbedLiveSample("Example")}}

              + +

              仕様書

              + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-scrollleft', 'scrollLeft')}}{{Spec2("CSSOM View")}}
              + +

              ブラウザーの互換性

              + +

              {{Compat("api.Element.scrollLeft")}}

              + +

              関連情報

              + + diff --git a/files/ja/web/api/element/scrolltop/index.html b/files/ja/web/api/element/scrolltop/index.html deleted file mode 100644 index 21f8478a46..0000000000 --- a/files/ja/web/api/element/scrolltop/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Element.scrollTop -slug: Web/API/Element/scrollTop -tags: - - API - - CSSOM View - - NeedsArtUpdate - - NeedsMarkupWork - - Property - - Reference - - プロパティ -translation_of: Web/API/Element/scrollTop ---- -
              {{APIRef("DOM")}}
              - -

              Element.scrollTop プロパティは、要素の内容が垂直にスクロールするピクセル数を取得または設定します。

              - -

              要素の scrollTop の値は、要素の上から最も上の表示されているコンテンツまでの距離を測ったものです。要素の内容が垂直スクロールバーを生成しなかった場合は、 scrollTop の値は 0 になります。

              - -

              scrollTop がルート要素 (<html> 要素) に対して使用されると、ウィンドウの scrollY が返されます。 これは scrollTop の特例です

              - -
              -

              画面の拡大縮小を使用するシステムでは、 scrollTop が小数になることがあります。

              -
              - -

              構文

              - -
              // スクロールしたピクセル数を取得
              -var intElemScrollTop = someElement.scrollTop;
              -
              - -

              このコードを実行した後、 intElemScrollTop はこの要素 ({{domxref("Element")}}) が上方向にスクロールしたピクセル数に対応した整数になります。

              - -
              // スクロールするピクセル数を設定
              -element.scrollTop = intValue;
              -
              - -

              scrollTop は任意の整数値で設定することができます。しかし、

              - -
                -
              • 要素がスクロールできない場合 (例えば、はみ出した部分がない場合や、要素に "non-scrollable" のプロパティがある場合)、 scrollTop0 に設定されます。
              • -
              • scrollTop は負の数には対応していません。代わりに、 0 に戻ります。
              • -
              • 指定された値が、コンテンツがスクロールできる最大値を超えていたら、 scrollTop は最大値に設定されます。
              • -
              - -

              - -
              -
              -

              padding-top

              -If you can see this, scrollTop = 0 - -

              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

              -If you can see this, scrollTop is > 0 - -

              Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

              -If you can see this, scrollTop is maxed-out - -

              padding-bottom

              -
              -Left Top Right Bottom margin-top margin-bottom border-top border-bottom
              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-scrolltop', 'scrollTop')}}{{Spec2("CSSOM View")}}
              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Element.scrollTop")}}

              - -

              関連情報

              - - diff --git a/files/ja/web/api/element/scrolltop/index.md b/files/ja/web/api/element/scrolltop/index.md new file mode 100644 index 0000000000..21f8478a46 --- /dev/null +++ b/files/ja/web/api/element/scrolltop/index.md @@ -0,0 +1,92 @@ +--- +title: Element.scrollTop +slug: Web/API/Element/scrollTop +tags: + - API + - CSSOM View + - NeedsArtUpdate + - NeedsMarkupWork + - Property + - Reference + - プロパティ +translation_of: Web/API/Element/scrollTop +--- +
              {{APIRef("DOM")}}
              + +

              Element.scrollTop プロパティは、要素の内容が垂直にスクロールするピクセル数を取得または設定します。

              + +

              要素の scrollTop の値は、要素の上から最も上の表示されているコンテンツまでの距離を測ったものです。要素の内容が垂直スクロールバーを生成しなかった場合は、 scrollTop の値は 0 になります。

              + +

              scrollTop がルート要素 (<html> 要素) に対して使用されると、ウィンドウの scrollY が返されます。 これは scrollTop の特例です

              + +
              +

              画面の拡大縮小を使用するシステムでは、 scrollTop が小数になることがあります。

              +
              + +

              構文

              + +
              // スクロールしたピクセル数を取得
              +var intElemScrollTop = someElement.scrollTop;
              +
              + +

              このコードを実行した後、 intElemScrollTop はこの要素 ({{domxref("Element")}}) が上方向にスクロールしたピクセル数に対応した整数になります。

              + +
              // スクロールするピクセル数を設定
              +element.scrollTop = intValue;
              +
              + +

              scrollTop は任意の整数値で設定することができます。しかし、

              + +
                +
              • 要素がスクロールできない場合 (例えば、はみ出した部分がない場合や、要素に "non-scrollable" のプロパティがある場合)、 scrollTop0 に設定されます。
              • +
              • scrollTop は負の数には対応していません。代わりに、 0 に戻ります。
              • +
              • 指定された値が、コンテンツがスクロールできる最大値を超えていたら、 scrollTop は最大値に設定されます。
              • +
              + +

              + +
              +
              +

              padding-top

              +If you can see this, scrollTop = 0 + +

              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

              +If you can see this, scrollTop is > 0 + +

              Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

              +If you can see this, scrollTop is maxed-out + +

              padding-bottom

              +
              +Left Top Right Bottom margin-top margin-bottom border-top border-bottom
              + +

              仕様書

              + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-scrolltop', 'scrollTop')}}{{Spec2("CSSOM View")}}
              + +

              ブラウザーの互換性

              + +

              {{Compat("api.Element.scrollTop")}}

              + +

              関連情報

              + + diff --git a/files/ja/web/api/element/scrollwidth/index.html b/files/ja/web/api/element/scrollwidth/index.html deleted file mode 100644 index 5f3e98892d..0000000000 --- a/files/ja/web/api/element/scrollwidth/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Element.scrollWidth -slug: Web/API/Element/scrollWidth -tags: - - API - - CSSOM View - - Property - - Reference - - プロパティ -translation_of: Web/API/Element/scrollWidth ---- -
              {{APIRef("DOM")}}
              - -

              Element.scrollWidth は読み取り専用のプロパティで、あふれたために画面に表示されない部分を含めた、要素の中身の幅の寸法です。

              - -

              scrollWidth の値は、水平スクロールバーを使用せずにすべてのコンテンツをビューポート内に合わせるために要素が必要とする最小幅に等しくなります。幅は {{domxref("Element.clientWidth", "clientWidth")}} と同じ方法で定めます。要素のパディングは含みますが、境界線、マージン、 (もしあれば) 垂直スクロールバーは含みません。これには {{cssxref("::before")}} または {{cssxref("::after")}} のような疑似要素の幅を含むことがあります。要素の内容が水平スクロールバーが必要なく合うのであれば、 scrollWidth は {{domxref("Element.clientWidth", "clientWidth")}} と等しくなります。

              - -
              -

              このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。

              -
              - -

              構文

              - -
              var xScrollWidth = element.scrollWidth;
              - -

              xScrollWidth はピクセル単位の element のコンテンツの幅です。

              - -

              - -
              <!DOCTYPE html>
              -<html>
              -<head>
              -    <title>Example</title>
              -    <style>
              -        div {
              -            overflow: hidden;
              -            white-space: nowrap;
              -            text-overflow: ellipsis;
              -        }
              -
              -        #aDiv {
              -            width: 100px;
              -        }
              -
              -        button {
              -            margin-bottom: 2em;
              -        }
              -    </style>
              -</head>
              -
              -<body>
              -    <div id="aDiv">
              -        FooBar-FooBar-FooBar-FooBar
              -    </div>
              -    <button id="aButton">
              -        Check for overflow
              -    </button>
              -
              -    <div id="anotherDiv">
              -        FooBar-FooBar-FooBar-FooBar
              -    </div>
              -    <button id="anotherButton">
              -        Check for overflow
              -    </button>
              -</body>
              -<script>
              -    var buttonOne = document.getElementById('aButton'),
              -    buttonTwo = document.getElementById('anotherButton'),
              -    divOne = document.getElementById('aDiv'),
              -    divTwo = document.getElementById('anotherDiv');
              -
              -    //check to determine if an overflow is happening
              -    function isOverflowing(element) {
              -        return (element.scrollWidth > element.offsetWidth);
              -    }
              -
              -    function alertOverflow(element) {
              -        if (isOverflowing(element)) {
              -            alert('Contents are overflowing the container.');
              -        } else {
              -            alert('No overflows!');
              -        }
              -    }
              -
              -    buttonOne.addEventListener('click', function() {
              -        alertOverflow(divOne);
              -    });
              -
              -    buttonTwo.addEventListener('click', function() {
              -        alertOverflow(divTwo);
              -    });
              -</script>
              -</html>
              -
              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName("CSSOM View", "#dom-element-scrollwidth", "Element.scrollWidth")}}{{Spec2("CSSOM View")}}初回定義
              - -

              ブラウザーの対応

              - -

              {{Compat("api.Element.scrollWidth")}}

              - -

              関連情報

              - - diff --git a/files/ja/web/api/element/scrollwidth/index.md b/files/ja/web/api/element/scrollwidth/index.md new file mode 100644 index 0000000000..5f3e98892d --- /dev/null +++ b/files/ja/web/api/element/scrollwidth/index.md @@ -0,0 +1,125 @@ +--- +title: Element.scrollWidth +slug: Web/API/Element/scrollWidth +tags: + - API + - CSSOM View + - Property + - Reference + - プロパティ +translation_of: Web/API/Element/scrollWidth +--- +
              {{APIRef("DOM")}}
              + +

              Element.scrollWidth は読み取り専用のプロパティで、あふれたために画面に表示されない部分を含めた、要素の中身の幅の寸法です。

              + +

              scrollWidth の値は、水平スクロールバーを使用せずにすべてのコンテンツをビューポート内に合わせるために要素が必要とする最小幅に等しくなります。幅は {{domxref("Element.clientWidth", "clientWidth")}} と同じ方法で定めます。要素のパディングは含みますが、境界線、マージン、 (もしあれば) 垂直スクロールバーは含みません。これには {{cssxref("::before")}} または {{cssxref("::after")}} のような疑似要素の幅を含むことがあります。要素の内容が水平スクロールバーが必要なく合うのであれば、 scrollWidth は {{domxref("Element.clientWidth", "clientWidth")}} と等しくなります。

              + +
              +

              このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。

              +
              + +

              構文

              + +
              var xScrollWidth = element.scrollWidth;
              + +

              xScrollWidth はピクセル単位の element のコンテンツの幅です。

              + +

              + +
              <!DOCTYPE html>
              +<html>
              +<head>
              +    <title>Example</title>
              +    <style>
              +        div {
              +            overflow: hidden;
              +            white-space: nowrap;
              +            text-overflow: ellipsis;
              +        }
              +
              +        #aDiv {
              +            width: 100px;
              +        }
              +
              +        button {
              +            margin-bottom: 2em;
              +        }
              +    </style>
              +</head>
              +
              +<body>
              +    <div id="aDiv">
              +        FooBar-FooBar-FooBar-FooBar
              +    </div>
              +    <button id="aButton">
              +        Check for overflow
              +    </button>
              +
              +    <div id="anotherDiv">
              +        FooBar-FooBar-FooBar-FooBar
              +    </div>
              +    <button id="anotherButton">
              +        Check for overflow
              +    </button>
              +</body>
              +<script>
              +    var buttonOne = document.getElementById('aButton'),
              +    buttonTwo = document.getElementById('anotherButton'),
              +    divOne = document.getElementById('aDiv'),
              +    divTwo = document.getElementById('anotherDiv');
              +
              +    //check to determine if an overflow is happening
              +    function isOverflowing(element) {
              +        return (element.scrollWidth > element.offsetWidth);
              +    }
              +
              +    function alertOverflow(element) {
              +        if (isOverflowing(element)) {
              +            alert('Contents are overflowing the container.');
              +        } else {
              +            alert('No overflows!');
              +        }
              +    }
              +
              +    buttonOne.addEventListener('click', function() {
              +        alertOverflow(divOne);
              +    });
              +
              +    buttonTwo.addEventListener('click', function() {
              +        alertOverflow(divTwo);
              +    });
              +</script>
              +</html>
              +
              + +

              仕様書

              + + + + + + + + + + + + + + + + +
              仕様書状態備考
              {{SpecName("CSSOM View", "#dom-element-scrollwidth", "Element.scrollWidth")}}{{Spec2("CSSOM View")}}初回定義
              + +

              ブラウザーの対応

              + +

              {{Compat("api.Element.scrollWidth")}}

              + +

              関連情報

              + + diff --git a/files/ja/web/api/element/tagname/index.html b/files/ja/web/api/element/tagname/index.html deleted file mode 100644 index e10c5acf43..0000000000 --- a/files/ja/web/api/element/tagname/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: element.tagName -slug: Web/API/Element/tagName -tags: - - DOM - - Gecko - - Gecko DOM Reference -translation_of: Web/API/Element/tagName ---- -
              - {{ApiRef}}
              -

              概要

              -

              要素の名前を返します。

              -

              構文

              -
              elementName = element.tagName
              -
              -
                -
              • elementName : 現在の要素の名前を含む文字列
              • -
              -

              注記

              -

              XML (および XHTML など XML ベースの言語) では、tagName は大文字・小文字が保たれます。HTML では、tagName は標準的な大文字で要素名を返します。 tagName の値は nodeName の値と同じになります。

              -

              -

              以下のようなマークアップを想定します。

              -
              <span id="born">When I was born...</span>
              -
              -

              上記 HTML に対し以下のスクリプトを実行した場合...

              -
              var span = document.getElementById("born");
              -
              -alert(span.tagName);
              -
              -

              XHTML (および他の XML 形式) では、「span」という警告ダイアログが表示されます。HTML では、その代わりに「SPAN」と表示されます。

              -

              仕様

              - diff --git a/files/ja/web/api/element/tagname/index.md b/files/ja/web/api/element/tagname/index.md new file mode 100644 index 0000000000..e10c5acf43 --- /dev/null +++ b/files/ja/web/api/element/tagname/index.md @@ -0,0 +1,36 @@ +--- +title: element.tagName +slug: Web/API/Element/tagName +tags: + - DOM + - Gecko + - Gecko DOM Reference +translation_of: Web/API/Element/tagName +--- +
              + {{ApiRef}}
              +

              概要

              +

              要素の名前を返します。

              +

              構文

              +
              elementName = element.tagName
              +
              +
                +
              • elementName : 現在の要素の名前を含む文字列
              • +
              +

              注記

              +

              XML (および XHTML など XML ベースの言語) では、tagName は大文字・小文字が保たれます。HTML では、tagName は標準的な大文字で要素名を返します。 tagName の値は nodeName の値と同じになります。

              +

              +

              以下のようなマークアップを想定します。

              +
              <span id="born">When I was born...</span>
              +
              +

              上記 HTML に対し以下のスクリプトを実行した場合...

              +
              var span = document.getElementById("born");
              +
              +alert(span.tagName);
              +
              +

              XHTML (および他の XML 形式) では、「span」という警告ダイアログが表示されます。HTML では、その代わりに「SPAN」と表示されます。

              +

              仕様

              + -- cgit v1.2.3-54-g00ecf From 10ba082441b43b1b232a2439ee2d181316bae8fa Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Mon, 28 Feb 2022 23:27:56 +0900 Subject: 2021/09/15 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/element/attributes/index.md | 136 ++++++++------------- .../ja/web/api/element/childelementcount/index.md | 39 +++--- files/ja/web/api/element/children/index.md | 47 ++++--- files/ja/web/api/element/classname/index.md | 82 ++++++++----- files/ja/web/api/element/clientheight/index.md | 66 ++++------ files/ja/web/api/element/clientwidth/index.md | 64 ++++------ files/ja/web/api/element/localname/index.md | 96 +++++++-------- files/ja/web/api/element/prefix/index.md | 44 +++---- files/ja/web/api/element/tagname/index.md | 85 ++++++++----- 9 files changed, 324 insertions(+), 335 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/element/attributes/index.md b/files/ja/web/api/element/attributes/index.md index f3653263ef..05f85d4bf7 100644 --- a/files/ja/web/api/element/attributes/index.md +++ b/files/ja/web/api/element/attributes/index.md @@ -6,113 +6,85 @@ tags: - Attributes - DOM - Element - - Property - プロパティ - リファレンス - - 属性 +browser-compat: api.Element.attributes translation_of: Web/API/Element/attributes --- -

              {{ APIRef("DOM") }}

              +{{ APIRef("DOM") }} -

              Element.attributes プロパティは、そのノードに登録された全ての属性ノードのコレクションを返却します。返却される値は {{domxref("NamedNodeMap")}} であり、 Array ではありません。つまり、 {{jsxref("Array")}} のメソッドは持っておらず、 {{domxref("Attr")}} ノードのインデックスはブラウザーによって変わる可能性があります。より正確に言うと、 attributes はその属性に関するあらゆる情報を表す文字列のキーと値の組です。

              +**`Element.attributes`** プロパティは、そのノードに登録されたすべての属性ノードの生きたコレクションを返却します。返却される値は {{domxref("NamedNodeMap")}} であり、 `Array` ではありません。つまり、 {{jsxref("Array")}} のメソッドは持っておらず、 {{domxref("Attr")}} ノードのインデックスはブラウザーによって変わる可能性があります。より正確に言うと、 `attributes` はその属性に関するあらゆる情報を表す文字列のキーと値の組です。 -

              構文

              +## 構文 -
              var attr = element.attributes;
              -
              +```js +var attr = element.attributes; +``` -

              +## 例 -

              基本的な例

              +### 基本的な例 -
              // ドキュメント内の最初の <p> 要素を取得する
              +```js
              +// 文書内の最初の 

              要素を取得 var para = document.getElementsByTagName("p")[0]; -var atts = para.attributes;

              +var atts = para.attributes; +``` -

              要素の属性を列挙する

              +### 要素の属性を列挙する -

              ある要素の全ての属性を走査したい時には、インデックスを使うと便利です。
              - 次の例では、 "paragraph" を id に持つ要素の全ての属性ノードを走査し、その属性の値を表示します。

              +ある要素のすべての属性を走査したい場合は、数値のインデックスを使うと便利です。 +次の例では、 "paragraph" を id に持つ要素のすべての属性ノードを走査し、その属性の値を表示します。 -
              <!DOCTYPE html>
              +```html
              +
               
              -<html>
              +
               
              - <head>
              -  <title>Attributes example</title>
              -  <script type="text/javascript">
              + 
              +  Attributes example
              +  
              + 
              +
              +
              + 

              サンプルの段落

              +
              +

              + + +

              +
              + + +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- 返却される値のインターフェースである {{domxref("NamedNodeMap")}} +- [quirksmode](https://www.quirksmode.org/dom/w3c_core.html#attributes) におけるブラウザー間の互換性の考慮事項 diff --git a/files/ja/web/api/element/childelementcount/index.md b/files/ja/web/api/element/childelementcount/index.md index c3520c9a31..1e869a7dc2 100644 --- a/files/ja/web/api/element/childelementcount/index.md +++ b/files/ja/web/api/element/childelementcount/index.md @@ -4,39 +4,40 @@ slug: Web/API/Element/childElementCount tags: - API - DOM - - Property - - Reference + - プロパティ + - リファレンス browser-compat: api.Element.childElementCount translation_of: Web/API/Element/childElementCount original_slug: Web/API/ParentNode/childElementCount --- -
              {{ APIRef("DOM") }}
              +{{ APIRef("DOM") }} -

              Element.childElementCount は読み取り専用のプロパティで、この要素の子要素の数を返します。

              +**`Element.childElementCount`** は読み取り専用のプロパティで、この要素の子要素の数を返します。 -

              構文

              +## 構文 -
              element.childElementCount;
              +```js +element.childElementCount; +``` -

              +## 例 -
              let sidebar = document.getElementById('sidebar');
              -if (sidebar.childElementCount > 0) {
              -  // 何もしない
              +```js
              +let sidebar = document.getElementById('sidebar');
              +if (sidebar.childElementCount > 0) {
              +  // 何かを行う
               }
              -
              +``` -

              仕様書

              +## 仕様書 {{Specifications}} -

              ブラウザーの互換性

              +## ブラウザーの互換性 -

              {{Compat}}

              +{{Compat}} -

              関連情報

              +## 関連情報 -
                -
              • {{domxref("Document.childElementCount")}}
              • -
              • {{domxref("DocumentFragment.childElementCount")}}
              • -
              +- {{domxref("Document.childElementCount")}} +- {{domxref("DocumentFragment.childElementCount")}} diff --git a/files/ja/web/api/element/children/index.md b/files/ja/web/api/element/children/index.md index 5dd887af4f..01e0dc6627 100644 --- a/files/ja/web/api/element/children/index.md +++ b/files/ja/web/api/element/children/index.md @@ -6,53 +6,50 @@ tags: - DOM - Element - HTMLCollection - - Property + - プロパティ - children browser-compat: api.Element.children translation_of: Web/API/Element/children original_slug: Web/API/ParentNode/children --- -
              {{ APIRef("DOM") }}
              +{{ APIRef("DOM") }} -

              children は読み取り専用のプロパティで、生きた {{domxref("HTMLCollection")}} で呼び出された要素の子{{domxref("Element", "要素", "", 1)}}をすべて返します。

              +**`children`** は読み取り専用のプロパティで、生きた {{domxref("HTMLCollection")}} で呼び出された要素の子{{domxref("Element", "要素", "", 1)}}をすべて返します。 -

              Element.children は要素のノードしか含みません。すべての子ノード、例えばテキストやコメントノードなどを取得するには、 {{domxref("Node.childNodes")}} を使用してください。

              +`Element.children` は要素のノードしか含みません。すべての子ノード、例えばテキストやコメントノードなどを取得するには、 {{domxref("Node.childNodes")}} を使用してください。 -

              構文

              +## 構文 -
              -// Getter
              +```js
              +// ゲッター
               collection = myElement.children;
               
              -// No setter; read-only property
              -
              +// セッターはありません。読み取り専用プロパティです。 +``` -

              返値

              +### 返値 -

              生きた {{ domxref("HTMLCollection") }} で、 node の子の DOM 要素の順序付きコレクションを返します。コレクションの {{domxref("HTMLCollection.item()", "item()")}} メソッドか、 JavaScript の配列スタイルの記法を使って、コレクション内の個々の子ノードにアクセスすることができます。

              +生きた {{ domxref("HTMLCollection") }} で、 `node` の子の DOM 要素の順序付きコレクションを返します。コレクションの {{domxref("HTMLCollection.item()", "item()")}} メソッドか、 JavaScript の配列スタイルの記法を使って、コレクション内の個々の子ノードにアクセスすることができます。 -

              ノードが子要素を持たない場合、 children は要素を含まず、length0 です。

              +ノードが子要素を持たない場合、 `children` は要素を含まず、`length` は `0` です。 -

              例 

              +## 例 -
              const myElement = document.getElementById('foo');
              -for (let i = 0; i < myElement.children.length; i++) {
              +```js
              +const myElement = document.getElementById('foo');
              +for (let i = 0; i < myElement.children.length; i++) {
                 console.log(myElement.children[i].tagName);
               }
              -
              +``` -

              仕様書

              +## 仕様書 {{Specifications}} -

              ブラウザーの互換性

              +## ブラウザーの互換性 -

              {{Compat}}

              +{{Compat}} -

              関連情報

              +## 関連情報 -
                -
              • - {{domxref("Node.childNodes")}} -
              • -
              +- {{domxref("Node.childNodes")}} diff --git a/files/ja/web/api/element/classname/index.md b/files/ja/web/api/element/classname/index.md index 00f15100e7..bbdbcc000b 100644 --- a/files/ja/web/api/element/classname/index.md +++ b/files/ja/web/api/element/classname/index.md @@ -1,35 +1,61 @@ --- -title: element.className +title: Element.className slug: Web/API/Element/className tags: + - API - DOM - Gecko - - Gecko DOM Reference + - プロパティ + - リファレンス +browser-compat: api.Element.className translation_of: Web/API/Element/className --- -
              - {{ApiRef}}
              -

              概要

              -

              className は要素の class 属性の値の取得 / 設定に用います。

              -

              構文

              -
              cName = elementNodeReference.className;
              -elementNodeReference.className = cName;
              -
                -
              • cName : クラス名(文字列)
              • -
              -

              -
              var elm = document.getElementById("div1"); //対象要素を取得
              -
              -if (elm.className == "fixed") {
              -  // 対象要素のクラス名が "fixed" であった場合の処理をここに記述
              -}
              -

              注記

              -

              "class" という語句はプログラミングに於いて様々な文脈で用いられる為、競合を防ぐために className という名称となっています。

              -

              仕様書

              - -

              関連情報

              -
                -
              • {{domxref("element.classList")}}
              • -
              +{{APIRef("DOM")}} + +**`className`** は {{domxref("Element")}} インターフェイスのプロパティで、この要素の [`class` 属性](/ja/docs/Web/HTML/Global_attributes/class)の値を取得したり設定したりします。 + +## 構文 + +```js +var cName = elementNodeReference.className; +elementNodeReference.className = cName; +``` + +- `cName` は文字列変数で、現在の要素のクラスまたは空白区切りのクラス群を表します。 + +## 例 + +```js +let el = document.getElementById('item'); + +if (el.className === 'active'){ + el.className = 'inactive'; +} else { + el.className = 'active'; +} +``` + +## メモ + +このプロパティでは、 `className` という名前が `class` の代わりに使用されています。 +これは DOM を操作するために使用される多くの言語と "class" キーワードが競合するためです。 + +`className` は {{domxref("SVGAnimatedString")}} のインスタンスにも、 `element` が {{domxref("SVGElement")}} であれば存在する可能性があります。 SVG 要素を扱っている場合は、要素の `className` は {{domxref("Element.getAttribute")}} や {{domxref("Element.setAttribute")}} を使用して取得したり設定したりした方がいいでしょう。しかし、その要素の [`class` 属性](/ja/docs/Web/HTML/Global_attributes/class)が空であった場合、 {{domxref("Element.getAttribute")}} は`""` ではなく [`null`](/ja/docs/Web/JavaScript/Reference/Global_Objects/null) を返すことに注意してください。 + +```js +elm.setAttribute('class', elm.getAttribute('class')) +``` + +> **Note:** `class` は **HTML 属性**であり、 `className` は **DOM プロパティ**です。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("element.classList")}} diff --git a/files/ja/web/api/element/clientheight/index.md b/files/ja/web/api/element/clientheight/index.md index 4cde36518d..15d1cc596a 100644 --- a/files/ja/web/api/element/clientheight/index.md +++ b/files/ja/web/api/element/clientheight/index.md @@ -5,63 +5,47 @@ tags: - API - CSSOM View - NeedsMarkupWork - - Property - - Reference + - プロパティ + - リファレンス +browser-compat: api.Element.clientHeight translation_of: Web/API/Element/clientHeight --- -
              {{APIRef("DOM")}}
              +{{APIRef("DOM")}} -

              Element.clientHeight は読み取り専用のプロパティで、 CSS のない要素やインラインレイアウトボックスではゼロになります。それ以外では、要素の内側の寸法をピクセル単位で表します。パディングは含みますが、境界、マージン、 (もしあれば) 水平スクロールバーは含みません。

              +**`Element.clientHeight`** は読み取り専用のプロパティで、 CSS のない要素やインラインレイアウトボックスではゼロになります。それ以外では、要素の内側の寸法をピクセル単位で表します。パディングは含みますが、境界、マージン、(もしあれば)水平スクロールバーは含みません。 -

              clientHeight は CSS height + CSS padding - 水平スクロールバーの高さ(height) (もしあれば) として計算できます。

              +`clientHeight` は CSS `height` + CSS `padding` - 水平スクロールバーの高さ (もしあれば) として計算できます。 -

              clientHeight がルート要素 (<html> 要素) (または文書が後方互換モードである場合は <body>) に使用された場合、 (スクロールバーを除いた) ビューポートの高さが返されます。これは clientHeight の特例です

              +`clientHeight` がルート要素(`` 要素)(または文書が後方互換モードである場合は ``)に使用された場合、(スクロールバーを除いた)ビューポートの高さが返されます。[これは `clientHeight` の特例です](https://www.w3.org/TR/2016/WD-cssom-view-1-20160317/#dom-element-clientheight)。 -
              -

              注: このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。

              -
              +> **Note:** このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。 -

              構文

              +## 構文 -
              var intElemClientHeight = element.clientHeight;
              +```js +var intElemClientHeight = element.clientHeight; +``` -

              intElemClientHeightelementclientHeight をピクセル単位で表す整数値です。 clientHeight プロパティは読み取り専用です。

              +`intElemClientHeight` は `element` の `clientHeight` をピクセル単位で表す整数値です。 `clientHeight` プロパティは読み取り専用です。 -

              +## 例 -

              Image:Dimensions-client.png

              +![](dimensions-client.png) -

              仕様書

              +## 仕様書 - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-clientheight', 'clientHeight')}}{{Spec2("CSSOM View")}}
              +{{Specifications}} -

              +### メモ -

              clientHeight は Internet Explorer オブジェクトモデルで導入されたプロパティです。

              +`clientHeight` は Internet Explorer オブジェクトモデルで導入されたプロパティです。 -

              ブラウザーの互換性

              +## ブラウザーの互換性 -

              {{Compat("api.Element.clientHeight")}}

              +{{Compat}} -

              関連情報

              +## 関連情報 - +- {{domxref("HTMLElement.offsetHeight")}} +- {{domxref("Element.scrollHeight")}} +- [要素の寸法の決定](/ja/docs/Web/API/CSS_Object_Model/Determining_the_dimensions_of_elements) diff --git a/files/ja/web/api/element/clientwidth/index.md b/files/ja/web/api/element/clientwidth/index.md index 47753e0077..af5d5481ca 100644 --- a/files/ja/web/api/element/clientwidth/index.md +++ b/files/ja/web/api/element/clientwidth/index.md @@ -4,62 +4,46 @@ slug: Web/API/Element/clientWidth tags: - API - CSSOM View - - Property - - Reference + - NeedsMarkupWork + - リファレンス - プロパティ +browser-compat: api.Element.clientWidth translation_of: Web/API/Element/clientWidth --- -
              {{APIRef("DOM")}}
              +{{APIRef("DOM")}} -

              Element.clientWidth プロパティは、インライン要素や CSS のない要素ではゼロになります。それ以外では、要素の内側の寸法をピクセル単位で表します。パディングは含みますが、境界、マージン、 (もしあれば) 垂直スクロールバーは含みません。

              +**`Element.clientWidth`** プロパティは、インライン要素や CSS のない要素ではゼロになります。それ以外では、要素の内側の寸法をピクセル単位で表します。パディングは含みますが、境界、マージン、(もしあれば)垂直スクロールバーは含みません。 -

              clientWidth がルート要素 (<html> 要素) (または文書が後方互換モードである場合は <body>) に使用された場合、 (スクロールバーの幅を除く) ビューポートの幅が返されます。これは clientWidth の特例です。

              +`clientWidth` がルート要素(`` 要素)(または文書が後方互換モードである場合は ``)に使用された場合、(スクロールバーを除いた)ビューポートの高さが返されます。[これは `clientWidth` の特例です](https://www.w3.org/TR/2016/WD-cssom-view-1-20160317/#dom-element-clientwidth)。 -
              -

              メモ: このプロパティは値を整数値に丸めます。小数値が必要であれば、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。

              -
              +> **Note:** このプロパティは値を整数に丸めます。小数の値が必要な場合は、 {{ domxref("element.getBoundingClientRect()") }} を使用してください。 -

              構文

              +## 構文 -
              var intElemClientWidth = element.clientWidth;
              +```js +var intElemClientWidth = element.clientWidth; +``` -

              intElemClientWidthelementclientWidth をピクセル数で表す整数値です。 clientWidth プロパティは読み取り専用です。

              +`intElemClientWidth` は `element` の `clientWidth` をピクセル数で表す整数値です。 `clientWidth` プロパティは読み取り専用です。 -

              +## 例 -

              Image:Dimensions-client.png

              +![](dimensions-client.png) -

              仕様書

              +## 仕様書 - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-clientwidth', 'clientWidth')}}{{Spec2("CSSOM View")}}
              +{{Specifications}} -

              メモ

              +## メモ -

              clientWidth は MS IE DHTML オブジェクトモデルにおいて初めて導入されました。

              +`clientTop` は MS IE DHTML オブジェクトモデルで最初に導入されました。 -

              ブラウザーの互換性

              +## ブラウザーの互換性 -

              {{Compat("api.Element.clientWidth")}}

              +{{Compat}} -

              関連情報

              +## 関連情報 - +- {{domxref("HTMLElement.offsetWidth")}} +- {{domxref("Element.scrollWidth")}} +- [要素の寸法の決定](/ja/docs/Web/API/CSS_Object_Model/Determining_the_dimensions_of_elements) diff --git a/files/ja/web/api/element/localname/index.md b/files/ja/web/api/element/localname/index.md index b92152fbfa..c676607ad5 100644 --- a/files/ja/web/api/element/localname/index.md +++ b/files/ja/web/api/element/localname/index.md @@ -6,82 +6,80 @@ tags: - DOM - NeedsBrowserCompatibility - NeedsMobileBrowserCompatibility -- Property -- Reference +- プロパティ +- リファレンス browser-compat: api.Element.localName translation_of: Web/API/Element/localName --- -
              {{APIRef("DOM")}}
              +{{APIRef("DOM")}} -

              Element.localName は読み取り専用プロパティで、要素の修飾名のローカル部分を返します。

              +**`Element.localName`** は読み取り専用プロパティで、要素の修飾名のローカル部分を返します。 -

              構文

              +## 構文 -
              name = element.localName
              -
              +```js +name = element.localName +``` -

              返値

              +### 返値 -

              要素の修飾名の、ローカル部分を示す {{domxref("DOMString")}} です。 -

              +要素の修飾名の、ローカル部分を示す {{domxref("DOMString")}} です。 -

              +## 例 -

              (text/xmlapplication/xhtml+xml のような、XML のコンテンツタイプで送出される必要があります。)

              +(`text/xml` や `application/xhtml+xml` のような、XML のコンテンツタイプで送出される必要があります。) -
              <html xmlns="http://www.w3.org/1999/xhtml"
              -      xmlns:svg="http://www.w3.org/2000/svg">
              -<head>
              -  <script type="application/javascript"><![CDATA[
              +```xml
              +
              +
              +  
              +
              +
              +  
              +    viewBox="0 0 100 100">
              +    
              +  
              +  
              +  

              +

              + + + +

              + +``` + +#### CSS + +```css +#notice { display: inline-block; margin-bottom: 12px; border-radius: 5px; @@ -114,17 +118,19 @@ nascetur ridiculus mus. Cras vulputate libero sed arcu iaculis nec lobortis orci padding: 5px; border: #2A9F00 solid 2px; border-radius: 5px; -}
              +} +``` -

              JavaScript

              +#### JavaScript -
              function checkReading () {
              +```js
              +function checkReading () {
                 if (checkReading.read) {
                   return;
                 }
              -  checkReading.read = this.scrollHeight - this.scrollTop === this.clientHeight;
              +  checkReading.read = this.scrollHeight - Math.round(this.scrollTop) === this.clientHeight;
                 document.registration.accept.disabled = document.getElementById("nextstep").disabled = !checkReading.read;
              -  checkReading.noticeBox.innerHTML = checkReading.read ? "Thank you." : "Please, scroll and read the following text.";
              +  checkReading.noticeBox.textContent = checkReading.read ? "Thank you." : "Please, scroll and read the following text.";
               }
               
               onload = function () {
              @@ -136,38 +142,26 @@ onload = function () {
                 oToBeRead.parentNode.insertBefore(document.createElement("br"), oToBeRead);
                 oToBeRead.onscroll = checkReading;
                 checkReading.call(oToBeRead);
              -}
              - -

              {{EmbedLiveSample('scrollHeight_Demo', '640', '400')}}

              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName("CSSOM View", "#dom-element-scrollheight", "Element.scrollHeight")}}{{Spec2("CSSOM View")}}初回定義
              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Element.scrollHeight")}}

              - -

              関連情報

              - - +} +``` + +### 結果 + +{{EmbedLiveSample('Checking_that_the_user_has_read_a_text', '640', '400')}} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [MSDN: + Measuring Element Dimension and Location with CSSOM in Windows Internet Explorer + 9]() +- {{domxref("Element.clientHeight")}} +- {{domxref("HTMLElement.offsetHeight")}} +- [要素の寸法の決定](/ja/docs/Web/API/CSS_Object_Model/Determining_the_dimensions_of_elements) -- cgit v1.2.3-54-g00ecf From 9f0e826282054eab8175b4cae7e93112a380a7e0 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Wed, 2 Mar 2022 00:00:04 +0900 Subject: 2022/02/07 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/element/scrollleft/index.md | 129 +++++++++++------------ files/ja/web/api/element/scrolltop/index.md | 148 +++++++++++++++------------ 2 files changed, 141 insertions(+), 136 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/element/scrollleft/index.md b/files/ja/web/api/element/scrollleft/index.md index 4a593af238..0d7dc3bbb4 100644 --- a/files/ja/web/api/element/scrollleft/index.md +++ b/files/ja/web/api/element/scrollleft/index.md @@ -4,58 +4,59 @@ slug: Web/API/Element/scrollLeft tags: - API - CSSOM View - - Property - - Reference - プロパティ + - リファレンス +browser-compat: api.Element.scrollLeft translation_of: Web/API/Element/scrollLeft --- -
              {{APIRef("DOM")}}
              +{{APIRef("DOM")}} -

              Element.scrollLeft プロパティは、要素の内容が左端からスクロールするピクセル数を取得または設定します。

              +**`Element.scrollLeft`** プロパティは、要素の内容が左端からスクロールするピクセル数を取得または設定します。 -

              要素の {{cssxref("direction")}} が rtl (right-to-left、右書き) の場合、 scrollLeft0 のときにスクロールバーが右端の位置 (スクロールする内容の開始位置) にあり、コンテンツの末尾にスクロールするにつれて、負の数が増加していきます。

              +要素の {{cssxref("direction")}} が `rtl` (right-to-left、右書き) の場合、 `scrollLeft` が `0` のときにスクロールバーが右端の位置(スクロールする内容の開始位置)にあり、コンテンツの末尾にスクロールするにつれて、負の数が増加していきます。 -
              -

              画面拡大を使用するシステムでは、 scrollLeft が小数になることがあります。

              -
              +> **Warning:** 画面拡大を使用するシステムでは、 `scrollLeft` が小数になることがあります。 -

              構文

              +## 構文 -

              値の取得

              +### 値の取得 -
              // スクロールしたピクセル数を取得
              -var sLeft = element.scrollLeft;
              -
              +```js +// スクロールしたピクセル数を取得 +var sLeft = element.scrollLeft; +``` -

              sLeftelement が左端からスクロールしたピクセル数を整数で表現したものです。

              +`sLeft` は `element` が左端からスクロールしたピクセル数を整数で表現したものです。 -

              値の設定

              +### 値の設定 -
              // スクロールしたピクセル数を設定
              -element.scrollLeft = 10;
              -
              +```js +// スクロールしたピクセル数を設定 +element.scrollLeft = 10; +``` -

              scrollLeft は任意の整数値で設定することができます。しかし、

              +`scrollLeft` は任意の整数値で設定することができます。しかし、 -
                -
              • 要素がスクロールできない場合 (例えば、はみ出した部分がない場合)、 scrollLeft0 に設定されます。
              • -
              • 指定された値が 0 より小さかったら (右書きの要素では 0 より大きかったら)、 scrollLeft0 に設定されます。
              • -
              • 指定された値が、コンテンツがスクロールできる最大値を超えていたら、 scrollLeft は最大値に設定されます。
              • -
              +- 要素がスクロールできない場合 (例えば、はみ出した部分がない場合)、 `scrollLeft` は `0` に設定されます。 +- 指定された値が `0` より小さかったら (右書きの要素では `0` より大きかったら)、 `scrollLeft` は `0` に設定されます。 +- 指定された値が、コンテンツがスクロールできる最大値を超えていたら、 `scrollLeft` は最大値に設定されます。 -

              +## 例 -

              HTML

              +### HTML -
              <div id="container">
              -  <div id="content">ボタンをクリックすると右にスライドします。</div>
              -</div>
              +```html
              +
              +
              ボタンをクリックすると右へスライドします。
              +
              -<button id="slide" type="button">右へスライド</button>
              + +``` -

              CSS

              +### CSS -
              #container {
              +```css
              +#container {
                 width: 100px;
                 height: 100px;
                 border: 1px solid #ccc;
              @@ -65,47 +66,33 @@ var sLeft = element.scrollLeft;
               #content {
                 width: 250px;
                 background-color: #ccc;
              -}
              +} +``` -

              JavaScript

              +### JavaScript -
              const button = document.getElementById('slide');
              +```js
              +const button = document.getElementById('slide');
               
               button.onclick = function () {
                 document.getElementById('container').scrollLeft += 20;
              -};
              - -

              結果

              - -

              {{EmbedLiveSample("Example")}}

              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-scrollleft', 'scrollLeft')}}{{Spec2("CSSOM View")}}
              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Element.scrollLeft")}}

              - -

              関連情報

              - - +}; +``` + +### 結果 + +{{EmbedLiveSample("Example")}} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [MSDN's Measuring Element Dimension and Location]( "MSDN Measuring Element Dimension and Location") +- {{domxref("Element.scrollTop")}} +- {{domxref("Element.scrollTo()")}} diff --git a/files/ja/web/api/element/scrolltop/index.md b/files/ja/web/api/element/scrolltop/index.md index 21f8478a46..898f8cc7bb 100644 --- a/files/ja/web/api/element/scrolltop/index.md +++ b/files/ja/web/api/element/scrolltop/index.md @@ -6,87 +6,105 @@ tags: - CSSOM View - NeedsArtUpdate - NeedsMarkupWork - - Property - - Reference - プロパティ + - リファレンス +browser-compat: api.Element.scrollTop translation_of: Web/API/Element/scrollTop --- -
              {{APIRef("DOM")}}
              +{{APIRef("DOM")}} -

              Element.scrollTop プロパティは、要素の内容が垂直にスクロールするピクセル数を取得または設定します。

              +**`Element.scrollTop`** プロパティは、要素の内容が垂直にスクロールするピクセル数を取得または設定します。 -

              要素の scrollTop の値は、要素の上から最も上の表示されているコンテンツまでの距離を測ったものです。要素の内容が垂直スクロールバーを生成しなかった場合は、 scrollTop の値は 0 になります。

              +要素の `scrollTop` の値は、要素の上から最も上の*表示されている*コンテンツまでの距離を測ったものです。要素の内容が垂直スクロールバーを生成しなかった場合は、 `scrollTop` の値は `0` になります。 -

              scrollTop がルート要素 (<html> 要素) に対して使用されると、ウィンドウの scrollY が返されます。 これは scrollTop の特例です

              +`scrollTop` がルート要素 (`` 要素) に対して使用されると、ウィンドウの `scrollY` が返されます。[これは `scrollTop` の特例です](https://www.w3.org/TR/2016/WD-cssom-view-1-20160317/#dom-element-scrolltop)。 -
              -

              画面の拡大縮小を使用するシステムでは、 scrollTop が小数になることがあります。

              -
              +> **Warning:** 画面の拡大縮小を使用するシステムでは、 `scrollTop` が小数になることがあります。 + +## 構文 -

              構文

              +```js +// スクロールしたピクセル数を取得 +var intElemScrollTop = someElement.scrollTop; +``` -
              // スクロールしたピクセル数を取得
              -var intElemScrollTop = someElement.scrollTop;
              -
              +このコードを実行した後、 `intElemScrollTop` はこの要素 ({{domxref("Element")}}) が上方向にスクロールしたピクセル数に対応した整数になります。 -

              このコードを実行した後、 intElemScrollTop はこの要素 ({{domxref("Element")}}) が上方向にスクロールしたピクセル数に対応した整数になります。

              +```js +// スクロールするピクセル数を設定 +element.scrollTop = intValue; +``` -
              // スクロールするピクセル数を設定
              -element.scrollTop = intValue;
              -
              +`scrollTop` は任意の整数値で設定することができます。しかし、 -

              scrollTop は任意の整数値で設定することができます。しかし、

              +- 要素がスクロールできない場合 (例えば、はみ出した部分がない場合や、要素に "**non-scrollable**" のプロパティがある場合)、 `scrollTop` は `0` に設定されます。 +- `scrollTop` は負の数には対応していません。代わりに、 `0` に戻ります。 +- 指定された値が、コンテンツがスクロールできる最大値を超えていたら、 `scrollTop` は最大値に設定されます。 -
                -
              • 要素がスクロールできない場合 (例えば、はみ出した部分がない場合や、要素に "non-scrollable" のプロパティがある場合)、 scrollTop0 に設定されます。
              • -
              • scrollTop は負の数には対応していません。代わりに、 0 に戻ります。
              • -
              • 指定された値が、コンテンツがスクロールできる最大値を超えていたら、 scrollTop は最大値に設定されます。
              • -
              +## 例 -

              +### 要素のスクロール -
              -
              -

              padding-top

              -If you can see this, scrollTop = 0 +この例で、破線の境界線の付いた内部のコンテナーをスクロールしてみて、 `scrollTop` の値がどのように変わるかを確認してください。 -

              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

              -If you can see this, scrollTop is > 0 +#### HTML -

              Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

              -If you can see this, scrollTop is maxed-out +```html -

              padding-bottom

              +
              +
              +

              Far out in the uncharted backwaters of the unfashionable end + of the western spiral arm of the Galaxy lies a small unregarded + yellow sun. Orbiting this at a distance of roughly ninety-two million + miles is an utterly insignificant little blue green planet whose + ape-descended life forms are so amazingly primitive that they still + think digital watches are a pretty neat idea.

              +
              -Left Top Right Bottom margin-top margin-bottom border-top border-bottom
              - -

              仕様書

              - - - - - - - - - - - - - - - - -
              仕様書状態備考
              {{SpecName('CSSOM View', '#dom-element-scrolltop', 'scrollTop')}}{{Spec2("CSSOM View")}}
              - -

              ブラウザーの互換性

              - -

              {{Compat("api.Element.scrollTop")}}

              - -

              関連情報

              - - + +
              scrollTop: 0
              +``` + +#### CSS + +```css +#scroller { + overflow: scroll; + height: 150px; + width: 150px; + border: 5px dashed orange; +} + +#output { + padding: 1rem 0; +} +``` + +#### JavaScript + +```js +const scroller = document.querySelector("#scroller"); +const output = document.querySelector("#output"); + +scroller.addEventListener("scroll", event => { + output.textContent = `scrollTop: ${scroller.scrollTop}`; +}); +``` + +#### 結果 + +{{EmbedLiveSample("Scrolling_an_element", 400, 250)}} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [MSDN's Measuring Element Dimension and Location]( "MSDN Measuring Element Dimension and Location") +- {{domxref("Element.scrollLeft")}} +- {{domxref("Element.scrollTo()")}} -- cgit v1.2.3-54-g00ecf From d30020571ea7fb60de06f9b8fa8ad876dda1006d Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 1 Mar 2022 22:58:26 +0900 Subject: 2022/02/18 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/element/innerhtml/index.md | 254 +++++++++++++++----------- files/ja/web/api/element/scrollwidth/index.md | 222 +++++++++++----------- 2 files changed, 249 insertions(+), 227 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/api/element/innerhtml/index.md b/files/ja/web/api/element/innerhtml/index.md index bd63262b6c..f3e54ca72c 100644 --- a/files/ja/web/api/element/innerhtml/index.md +++ b/files/ja/web/api/element/innerhtml/index.md @@ -7,160 +7,205 @@ tags: - DOM Parsing - Element - Parsing HTML - - Property - - Reference + - プロパティ + - リファレンス - innerHTML - プロパティ browser-compat: api.Element.innerHTML translation_of: Web/API/Element/innerHTML --- -
              {{APIRef("DOM")}}
              +{{APIRef("DOM")}} -

              {{domxref("Element")}} オブジェクトの innerHTML プロパティは、要素内の HTML または XML のマークアップを取得したり設定したりします。

              +{{domxref("Element")}} オブジェクトの **`innerHTML`** プロパティは、要素内の HTML または XML のマークアップを取得したり設定したりします。 -
              メモ: {{HTMLElement("div")}}, {{HTMLElement("span")}}, {{HTMLElement("noembed")}} ノードが (&), (<), (>) の文字を含むテキストの子ノードを持っている場合、 innerHTML はこれらの文字を HTML エンティティの "&amp;", "&lt;", "&gt;" としてそれぞれ返します。これらのテキストノードの内容の生のコピーを取得するには {{domxref("Node.textContent")}} を使用してください。
              +要素の内容を置き換えるというより、文書に HTML を挿入するという場合には、 {{domxref("Element.insertAdjacentHTML", "insertAdjacentHTML()")}} メソッドを使用してください。 -

              要素の内容を置き換えるというより、文書に HTML を挿入するという場合には、 {{domxref("Element.insertAdjacentHTML", "insertAdjacentHTML()")}} メソッドを使用してください。

              +## 構文 -

              構文

              +```js +const content = element.innerHTML; -
              const content = element.innerHTML;
              +element.innerHTML = content;
              +```
               
              -element.innerHTML = htmlString;
              -
              +### 値 -

              +要素の子孫を HTML にシリアライズしたものを含んだ {{domxref("DOMString")}} です。 `innerHTML` に値を設定すると、要素のすべての子孫を削除して、 _htmlString_ の文字列で与えられた HTML を解釈して構築されたノードに置き換えます。 -

              要素の子孫を HTML シリアライズしたものを含んだ {{domxref("DOMString")}} です。 innerHTML に値を設定すると、要素のすべての子孫を削除して、 htmlString の文字列で与えられた HTML を解析して構築されたノードに置き換えます。

              +### 例外 -

              例外

              +- `SyntaxError` {{domxref("DOMException")}} + - : 正しくない形の HTML の文字列を使用して `innerHTML` の値を設定しようとした場合に発生します。 +- `NoModificationAllowedError` {{domxref("DOMException")}} + - : 親が {{domxref("Document")}} であるノードに HTML を挿入しようとした場合に発生します。 -
              -
              SyntaxError
              -
              正しくない形の HTML の文字列を使用して innerHTML の値を設定しようとした場合。
              -
              NoModificationAllowedError
              -
              親が {{domxref("Document")}} であるノードに HTML を挿入しようとした場合。
              -
              +## 使用上のメモ -

              使用上のメモ

              +`innerHTML` プロパティは、ページの現在の HTML ソースを、ページが最初に読み込まれてから行われたあらゆる変更を含めて、見るために利用することができます。 -

              innerHTML プロパティは、ページの現在の HTML ソースを、ページが最初に読み込まれてから行われたあらゆる変更を含めて、見るために利用することができます。

              +### 要素の HTML コンテンツの読み取り -

              要素の HTML コンテンツの読み取り

              +`innerHTML` を読み取ると、ユーザーエージェントが要素の子孫で構成される HTML または XML の断片をシリアライズします。結果として文字列が返ります。 -

              innerHTML を読み取ると、ユーザーエージェントが要素の子孫で構成される HTML または XML の断片をシリアライズします。結果として文字列が返ります。

              +```js +let contents = myElement.innerHTML; +``` -
              let contents = myElement.innerHTML;
              +これで、 HTML のコンテンツのノードの HTML マークアップを見ることができます。 -

              これで、 HTML のコンテンツのノードの HTML マークアップを見ることができます。

              +> **Note:** 返される HTML または XML の断片は、現在の要素の中身に基づいて生成されますので、返される断片のマークアップや整形方法は、元のページのマークアップと同じであるとは限りません。 -
              -

              メモ: 返される HTML または XML の断片は、現在の要素の中身に基づいて生成されますので、返される断片のマークアップや整形方法は、元のページのマークアップと同じであるとは限りません。

              -
              +### 要素の中身の置き換え + +`innerHTML` の値を設定することで、既存の要素の内容を新しい内容に置き換えることが簡単にできます。 + +> **Note:** 挿入される文字列に悪意のある内容が含まれる可能性がある場合、[セキュリティ上のリスク](#セキュリティの考慮事項)になります。 +> ユーザーが提供したデータを挿入する場合は、 {{domxref("Element.SetHTML()")}} を使用するよう常に検討してください。こちらは挿入する前に無害化を行います。 + +例えば、文書の {{domxref("Document.body", "body")}} 属性の内容を消去することで、文書の内容全体を消去することができます。 -

              要素の中身の置き換え

              +```js +document.body.innerHTML = ""; +``` -

              innerHTML の値を設定することで、既存の要素の内容を新しい内容に置き換えることが簡単にできます。

              +この例は文書の現在の HTML マークアップを走査し、 `"<"` の文字を HTML エンティティの `"<"` に置き換え、それによって本質的に HTML を生テキストに変換します。そしてこれを {{HTMLElement("pre")}} で囲みます。そして、 `innerHTML` の値をこの新しい文字列に変更します。結果として、文書の内容がページ全体のソースコードの表示に置き換わります。 -

              例えば、文書の {{domxref("Document.body", "body")}} 属性の内容を消去することで、文書の内容全体を消去することができます。

              +```js +document.documentElement.innerHTML = "
              " +
              +         document.documentElement.innerHTML.replace(/";
              +```
               
              -
              document.body.innerHTML = "";
              +#### 操作の詳細 -

              この例は文書の現在の HTML マークアップを走査し、 "<" の文字を HTML エンティティの "&lt;" に置き換え、それによって本質的に HTML を生テキストに変換します。そしてこれを {{HTMLElement("pre")}} で囲みます。そして、 innerHTML の値をこの新しい文字列に変更します。結果として、文書の内容がページ全体のソースコードの表示に置き換わります。

              +`innerHTML` に値を設定すると、正確には何が起きるのでしょうか?これを行うと、ユーザーエージェントは以下のステップを追います。 -
              document.documentElement.innerHTML = "<pre>" +
              -         document.documentElement.innerHTML.replace(/</g,"&lt;") +
              -            "</pre>";
              +1. 指定された値は (文書型に基づいて) HTML または XML として解釈され、新しい一連の要素の DOM ノードを表す {{domxref("DocumentFragment")}} オブジェクトの中に結果が入れられます。 +2. 中身を置き換えようとしている要素が {{HTMLElement("template")}} 要素である場合は、 `