ホームページ > ウェブフロントエンド > フロントエンドQ&A > iFrame の読み込みページが更新されるのはなぜですか?

iFrame の読み込みページが更新されるのはなぜですか?

PHPz
リリース: 2023-04-25 18:56:17
オリジナル
2753 人が閲覧しました

Web 開発では、iFrame は非常によく使用されるタグで、他のページのコンテンツを埋め込んだり、JavaScript を通じて操作したりできます。ただし、多くの開発者は、iFrame を使用してページを読み込むときに、読み込み時にページが更新されるという問題に遭遇することがよくあります。この問題を解決するには多くの方法がありますが、この記事では、より一般的な解決策の 1 つを紹介します。

まず、iFrame の読み込みページが更新される理由を理解する必要があります。通常、iFrame を使用して新しいページを読み込むとき、ページに JavaScript コードが含まれている場合、ページの読み込み時にこれらのコードが実行され、これらのコードを実行するとページが再読み込みされる可能性があります。これは、これらのコードがページの DOM 構造を変更したり、サーバーにリクエストを送信したりして、ページが更新される可能性があるためです。

この問題を解決するには、2 つの方法を使用できます。 1 つは iFrame で JavaScript を使用する方法、もう 1 つは埋め込みページで JavaScript を使用する方法です。以下では、これら 2 つのメソッドの実装をそれぞれ紹介します。

1. iFrame での JavaScript の使用

iFrame で JavaScript を使用するには、onload イベントを iFrame に追加し、onload イベントでロードする必要があるページを実行する必要があります。たとえば、次のコード:

<iframe src="loading.html" onload="loadPage()"></iframe>
<script>
function loadPage() {
  document.getElementById('iframe').contentWindow.location.reload(true);
}
</script>
ログイン後にコピー

上記のコードでは、onload イベントを iFrame に追加し、イベント内でloadPage() 関数を実行しました。この関数は、iFrame の contentWindow プロパティを通じて現在の iFrame 内のウィンドウ オブジェクトを取得し、location.reload() メソッドを通じてページを読み込みます。 location.reload() メソッドを呼び出すときに true パラメータが渡されるため、ページが強制的に更新され、ページが繰り返し読み込まれることがなくなります。

2. 埋め込みページで JavaScript を使用する

埋め込みページで JavaScript を使用するには、親ページの window オブジェクトを使用して iFrame を操作する必要があります。たとえば、次のコード:

<script>
function loadPage() {
  var iframe = window.parent.document.getElementById('iframe');
  iframe.contentWindow.location.replace('loading.html');
}
</script>
ログイン後にコピー

上記のコードでは、window.parent を通じて親ページの window オブジェクトを取得し、このオブジェクト内の iFrame の DOM オブジェクトを取得します。次に、 location.replace() メソッドを使用して新しいページを読み込みます。このメソッドは、ページを再読み込みできるという点で location.reload() メソッドに似ていますが、ブラウザ履歴に記録は残りません。

概要:

上記は、iFrame の読み込みページ更新の問題を解決する 2 つの方法であり、実際の状況に応じていずれかを選択できます。どの方法を使用する場合でも、鍵となるのはコードの記述であり、繰り返しロードを避けるために JavaScript の特性を合理的に利用する必要があります。

以上がiFrame の読み込みページが更新されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート