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

ネイティブ JavaScript API の概要: MutationObserver、IntersectionObserver、および History API

Jan 05, 2025 pm 02:46 PM

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 までご連絡ください。

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptの進化:現在の傾向と将来の見通し JavaScriptの進化:現在の傾向と将来の見通し Apr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptエンジン:実装の比較 JavaScriptエンジン:実装の比較 Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

JavaScript:Web言語の汎用性の調査 JavaScript:Web言語の汎用性の調査 Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合) next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合) Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

C/CからJavaScriptへ:すべてがどのように機能するか C/CからJavaScriptへ:すべてがどのように機能するか Apr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合) next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合) Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

See all articles