フレーム プログラミングの概要 HTML ページには、 でマークされ、独立した HTML ページを表示するために使用される 1 つ以上のサブフレームを含めることができます。ここで説明するフレームワークプログラミングには、あるフレームワークから別のフレームワークのJavaScript変数を参照したり、他のフレームワークの関数を呼び出したり、別のフレームワークのフォームの動作を制御したりするなど、フレームワークの自己制御やフレームワーク間の相互アクセスが含まれます。 フレーム間の相互参照 ページ内のすべてのフレームは、コレクションの形式でウィンドウ オブジェクトの属性として提供されます。たとえば、window.frames はすべてのフレームの属性を表します。ページ内のフレームは、フォーム オブジェクト、リンク オブジェクト、ピクチャ オブジェクトなどに似ています。違いは、これらのコレクションがドキュメントの属性であることです。したがって、サブフレームを参照するには、次の構文を使用できます: window.frames["frameName"]; window.frames.frameName window.frames[index] ここで、window という単語は代わりに self を使用することも、省略することもできます。frameName がページの最初のフレームであると仮定すると、次の記述メソッドは同等です: self.frames["frameName"] self.frames[0] frames [0] frameName 各フレームは HTML ページに対応するため、このフレームは独立したブラウザ ウィンドウでもあり、いわゆるフレームへの参照も備えています。ウィンドウオブジェクトへの参照。この window オブジェクトを使用すると、window.document オブジェクトを使用してページにデータを書き込んだり、window.location プロパティを使用してフレーム内のページを変更したりするなど、その中のページを簡単に操作できます。 以下では、異なるレベルのフレームワーク間の相互参照を紹介します。 1.親フレームから子フレームへの参照 上記の原則を知っていると、親フレームから子フレームを参照するのは非常に簡単です。window.frames["frameName"]; このように、ページ内の名前が参照されるのは、frameName のサブフレームです。サブフレーム内のサブフレームを参照したい場合は、ウィンドウ オブジェクトの性質に従って、参照されるフレームを次のように実装できます。 window.frames["frameName"].frames["frameName2"]; >参照方法は次のとおりです。 第 2 レベルのサブフレームワークなどになると、多層フレームワークの参照が実現されます。 2.子フレームから親フレームへの参照 各ウィンドウオブジェクトには、親フレームを表すparent属性があります。フレームがすでにトップレベルのフレームである場合、window.parent はフレーム自体も表します。 3.兄弟フレーム間の参照 2 つのフレームが同じフレームのサブフレームである場合、それらは親フレームを通じて相互に参照できます。たとえば、ページには 2 つのサブフレームが含まれます。 🎜>コードをコピーします コードは次のとおりです: <フレーム src="1.html"name="frame1" /> ; frame1 で次のステートメントを使用して、frame2 を参照できます: self.parent.frames["frame2"];異なるレベルのフレームワーク間の相互参照 フレームワークのレベルは、最上位のフレームワーク用です。レベルが異なる場合、自分がいるレベルと、他のフレームのレベルと名前がわかっていれば、フレームによって参照されるウィンドウ オブジェクトのプロパティを使用して、相互に簡単にアクセスできます。たとえば、self.parent.frames["childName "].frames["targetFrameName"]; 5.最上位フレーム への参照は、parent 属性と似ています。window オブジェクトにも top 属性があります。これは、トップレベルのフレームへの参照を表し、フレーム自体がトップレベルのフレームであるかどうかを判断するために使用できます。例: Copy code コードは次のとおりです: //このフレームがトップレベルのフレームかどうかを判断しますif(self==top){ //dosomething } フレームの読み込みページを変更します フレームへの参照は、ウィンドウ オブジェクトの location 属性を使用して、ウィンドウ オブジェクトへの参照になります。フレームのナビゲーションを変更できます。例: window.frames[0] .location="1.html"; これにより、ページ内の最初のフレームのページが 1.html にリダイレクトされます。このプロパティを使用すると、1 つのリンクを使用して複数のフレームを更新することもできます。 コードをコピー コードは次のとおりです: フレームセット> リンク< ;/a> 他のフレームワークでの JavaScript 変数と関数の参照他のフレームワークで JavaScript 変数と関数を参照するテクニックを紹介する前に、次のコードを見てみましょう: コードをコピーします コードは次のとおりです: ;!-- <br>function hello(){ <br>alert("hello,ajax!") <br>} <br>//--> このコードを実行すると、hello() 関数の実行結果である「hello, ajax!」ウィンドウが表示されます。では、なぜ hello() が window オブジェクトのメソッドになったのでしょうか?ページ内で定義されたすべてのグローバル変数とグローバル関数はウィンドウ オブジェクトのメンバーであるためです。例: var a=1; alert(window.a); と表示されたダイアログ ボックスが表示されます。同じ原則が、ウィンドウ オブジェクトを通じて変数や関数を呼び出すことで、異なるフレームワーク間で変数や関数を共有する場合にも当てはまります。 例: 製品閲覧ページは 2 つのサブフレームで構成され、ユーザーがカテゴリのリンクをクリックすると、対応する製品リストが右側に表示されます。商品の横にある[購入]リンクをクリックして商品をカートに追加します。 この例では、左側のナビゲーション ページを使用して、ユーザーが購入したい製品を保存できます。これは、ユーザーがナビゲーション リンクをクリックすると、別のページである製品表示ページが変化し、ナビゲーション ページ自体が変化するためです。は変更されないため、その中の JavaScript 変数は失われることなく、グローバル データの保存に使用できます。実装原理は次のとおりです。 左側のページが link.html で、右側のページが show.html であるとします。 ページ構造は次のとおりです。 コードをコピー コードは次のとおりです: %"> < フレーム src="link.html"name="link" /> <フレーム src="show.html"name="show" /> < ;/frameset> < /html> show.html に表示される商品の横に次のようなステートメントを追加できます: ショッピング カートに追加 link はナビゲーション フレームを表し、arrOrders 配列は link.html ページで定義されています。製品の ID であり、関数 addToOrders() はその隣の製品 [購入のクリック イベントの場合] リンクに応答するために使用されます。この例では、受け取るパラメーター ID は製品の ID を表します。 ID が 32068 の製品: コードをコピー コードは次のとおりです: < ;script language="JavaScript" type="text/javascript">