JavaScriptのtopを使用してパネルに書店を表示するWebサイトがあります。フレームを使用して、このWebサイトを別のWebサイトに追加したいと思います。しかし、フレームのsrcでURLを修正すると、ページまたは画像の階層が変更され、書店が表示されません。
2 に答える
したがって、「top」は実際には「window.top」です (ただし、window はグローバル スコープの一部であるため、「top」だけで回避できます)。window.top の機能を調べてみると、「ウィンドウ階層の最上位のウィンドウへの参照」が返されることがわかります。つまり、次の場合:
Frame Page B
Famed Page C
いずれかから window.top を呼び出すと、同じウィンドウ オブジェクト (ページ B のもの) が返されます。
ただし、代わりに次の場合:
Frame Page A
Frame Page B
Famed Page C
window.top は、ページ A、B、C のいずれから呼び出しても、常にページ A のウィンドウ オブジェクトを返します。
代わりに使用したいと思うのは (サイトを見ないとわかりにくいですが) window.parent (つまり、「window.」に煩わされたくない場合は「親」) です。このプロパティは、問題のウィンドウの直接の親を返します。これを C から呼び出すと、B が A の内側にフレーム化されていても、常に B のウィンドウが返されます。
それが役立つことを願っています。
あなたの問題を本当に理解しているかどうかはわかりません。(o;
これは、サイトのデフォルト フレームセットの単純な形式である必要があります。
<html>
<frameset rows="50,50">
<frame name="bookframe" src="bookframe.html" />
<frame src="default.html" />
</frameset>
</html>
これは、ブックフレーム パネルを制御するための JavaScript コードを含む default.html である必要があります。
<html>
<body>
<script>
parent.frames["bookframe"].location.href = "uri";
</script>
</body>
</html>
ご覧のとおり、トップではなくフレームの名前を使用しています。
最初のリスティングのフレームセットを iframe を使用して新しいページに含めても、すべてが機能しています。
<html>
<body>
<iframe src="frameset.html" />
</body>
</html>
最初からフレームセットではなく iframe のみを使用している Web サイトは、top の代わりに名前を使用して機能しています。
ヒント: 名前は一意である必要があります。同じ名前の JavaScript 変数があってはなりません。マイクロソフトのみがその理由を知っています。
それが役立つことを願っています!