0

JavaScriptのtopを使用してパネルに書店を表示するWebサイトがあります。フレームを使用して、このWebサイトを別のWebサイトに追加したいと思います。しかし、フレームのsrcでURLを修正すると、ページまたは画像の階層が変更され、書店が表示されません。

4

2 に答える 2

0

したがって、「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 のウィンドウが返されます。

それが役立つことを願っています。

于 2009-10-08T18:53:47.687 に答える
0

あなたの問題を本当に理解しているかどうかはわかりません。(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 変数があってはなりません。マイクロソフトのみがその理由を知っています。

それが役立つことを願っています!

于 2009-10-09T06:58:58.880 に答える