検索
ホームページウェブフロントエンドjsチュートリアルネイティブ JavaScript API の概要: MutationObserver、IntersectionObserver、および History API

Introduction to Native JavaScript APIs: MutationObserver, IntersectionObserver, and History API

最新の Web アプリケーションでは、応答性、効率性、動的な対話性が求められます。 MutationObserver、IntersectionObserver、History API などのネイティブ JavaScript API を使用すると、開発者は外部ライブラリを必要とせずに、これらの課題に直接対処できます。これらの API を詳しく調査し、そのユースケースを理解し、その能力を効果的に活用する方法を学びましょう。

突然変異観察者

概要:

MutationObserver インターフェイスは DOM ツリー内の変更を監視し、現在非推奨になっている Mutation Events を置き換えます。ノードの追加、削除、変更を検出できるため、動的アプリケーションにとって不可欠なツールとなります。

主な機能:

  • DOM ツリーへの変更を監視します。
  • 属性、子ノード、テキスト コンテンツへの変更を検出します。
  • 非同期で動作し、パフォーマンスへの影響を最小限に抑えます。

Q. MutationObserver はどのように機能しますか?

MutationObserver インスタンスは、DOM 内で指定された変更が発生するたびにトリガーされるコールバック関数を使用して作成されます。

MutationObserver のオプション

  • サブツリー: ターゲット ノードとそのすべての子孫を監視します。

  • childList: 子ノードの追加または削除を監視します。

  • attributes: ターゲット ノードの属性への変更を追跡します。

  • attributeFilter: 監視を指定された属性に制限します。

  • attributeOldValue: 属性が変更される前の以前の値を取得します。

  • characterData: ノードのテキスト コンテンツへの変更を監視します。

  • characterDataOldValue: 変更前のテキスト コンテンツの前の値を取得します。

HTML 構文

<div>



<p><strong>JS Syntax</strong><br>
</p>

<pre class="brush:php;toolbar:false">
const target = document.querySelector('#something')

const observer = new MutationObserver(function(mutations){
    mutations.forEach(function(mutation){
    console.log('Mutation detected:', mutation)
  })
})

const config = {attributes:true, childList:true, characterData:true, subtree:true}

observer.observe(target,config)

//observer.disconnect() - to stop observing

使用例:

  • UI 要素を動的に更新します。
  • DOM 変更に対するカスタム動作を実装します。
  • サードパーティのライブラリの変更を監視します。

交差点観察者

概要:

IntersectionObserver は、ルート コンテナまたはビューポートに対するターゲット要素の可視性の変化を非同期的に監視するインターフェイスです。これは、遅延読み込み、無限スクロール、分析によく使用されます。

主な機能:

  • 要素の可視性を効率的に追跡します。
  • スクロール イベント リスナーへの依存を軽減します。
  • しきい値をきめ細かく制御できます。

Q.交差点オブザーバーの仕組み

Intersection Observer API は、次のいずれかの状況が発生したときに呼び出されるコールバックをトリガーします。

  1. ターゲット要素は、デバイスのビューポートまたは指定されたルート要素と交差します。

  2. オブザーバーが初めてターゲット要素の監視を開始したとき。

交差点オブザーバーのオプション

  • root: 可視性をチェックするためのビューポートとして使用される要素。指定しない場合、デフォルトはブラウザのビューポートです。

  • rootMargin: ルートの周囲のマージン。文字列として指定します (例: "10px 20px")。観測可能範囲を拡大または縮小します。

  • しきい値: コールバックをトリガーするために必要な可視性のパーセンテージを示す、0 から 1 までの値 (または値の配列)。

Q.交差はどのように計算されますか?

Intersection Observer API は、長方形を使用して交差エリアを計算します。

  • 不規則な形状の要素は、それらを完全に囲む最小の長方形内に収まるものとして処理されます。

  • 部分的に表示される要素の場合、すべての表示部分を含む最小の長方形が使用されます。これにより、要素の形状や可視性に関係なく、測定の一貫性が確保されます。

基本構文

<div>



<p><strong>JS Syntax</strong><br>
</p>

<pre class="brush:php;toolbar:false">
const target = document.querySelector('#something')

const observer = new MutationObserver(function(mutations){
    mutations.forEach(function(mutation){
    console.log('Mutation detected:', mutation)
  })
})

const config = {attributes:true, childList:true, characterData:true, subtree:true}

observer.observe(target,config)

//observer.disconnect() - to stop observing

使用例:

  • 画像またはビデオの遅延読み込み。
  • 無限スクロールを実装します。
  • 特定の要素に対するユーザー エンゲージメントを追跡します。

高度な機能:

  • 複数のしきい値: しきい値配列を使用して部分的な可視性を観察します。
  • ルート マージン: 早期検出のためにビューポートの境界を拡張します。

履歴API

概要:

History API を使用すると、Web アプリケーションでブラウザのセッション履歴を操作できます。これにより、ページをリロードせずにエントリを追加、置換、または変更できます。これは、シングル ページ アプリケーション (SPA) の基礎です。

主な機能:

  • pushState と replaceState を使用して履歴スタックを管理します。
  • popstate を使用してナビゲーション イベントをリッスンします。
  • ページ全体をリロードせずにブラウザのアドレス バーを更新します。

基本構文:

const observer = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      console.log('Element is visible in the viewport.')
      // Optionally stop observing
      observer.unobserve(entry.target)
    }
  })
})

// Target elements to observe
const targetElement = document.querySelector('.lazy-load')

// Start observing
observer.observe(targetElement)

使用例:

  • 動的ルーティングを使用して SPA を構築します。
  • ブラウザ ナビゲーションを使用してアプリケーションの状態を管理します。
  • カスタム ナビゲーション エクスペリエンスを作成します。
  • 重要な注意事項:
  • 古いブラウザに対して適切なフォールバックを確保します。
  • SEO を向上させるために URL パラメーターと組み合わせます。

これらの API の組み合わせ

これらの API は連携して、洗練された Web アプリケーションを作成できます。例:

  • MutationObserverを使用して、動的 DOM 変更を監視します。
  • DOM の変更によって追加された コンテンツの遅延読み込みIntersectionObserver を実装します。
  • 履歴 API を利用して、アプリケーション内で シームレスなナビゲーション を提供します。

使用例:

ブログ アプリケーションは、ユーザーが下にスクロールすると (無限スクロール)、投稿を動的に読み込みます。また、ページをリロードせずに URL を更新して現在の投稿を反映するため、ユーザー エクスペリエンスが向上し、SEO が向上します。

<div>



<p><strong>JS Syntax</strong><br>
</p>

<pre class="brush:php;toolbar:false">
const target = document.querySelector('#something')

const observer = new MutationObserver(function(mutations){
    mutations.forEach(function(mutation){
    console.log('Mutation detected:', mutation)
  })
})

const config = {attributes:true, childList:true, characterData:true, subtree:true}

observer.observe(target,config)

//observer.disconnect() - to stop observing

結論

MutationObserver、IntersectionObserver、および History API は、動的でインタラクティブな Web アプリケーションのための強力なネイティブ ソリューションを提供します。それらの機能を理解し、それらを効果的に統合することで、開発者は外部ライブラリに大きく依存することなく、パフォーマンスが高く機能が豊富なアプリケーションを構築できます。

以上がネイティブ JavaScript API の概要: MutationObserver、IntersectionObserver、および History APIの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptフレームワーク:最新のWeb開発のパワーJavaScriptフレームワーク:最新のWeb開発のパワーMay 02, 2025 am 12:04 AM

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

JavaScript、C、およびブラウザの関係JavaScript、C、およびブラウザの関係May 01, 2025 am 12:06 AM

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、型を使用してストリーミングしますnode.jsは、型を使用してストリーミングしますApr 30, 2025 am 08:22 AM

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

Python vs. JavaScript:パフォーマンスと効率の考慮事項Python vs. JavaScript:パフォーマンスと効率の考慮事項Apr 30, 2025 am 12:08 AM

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptの起源:その実装言語の調査JavaScriptの起源:その実装言語の調査Apr 29, 2025 am 12:51 AM

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

舞台裏:JavaScriptをパワーする言語は何ですか?舞台裏:JavaScriptをパワーする言語は何ですか?Apr 28, 2025 am 12:01 AM

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの未来:傾向と予測PythonとJavaScriptの未来:傾向と予測Apr 27, 2025 am 12:21 AM

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

Python vs. JavaScript:開発環境とツールPython vs. JavaScript:開発環境とツールApr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!