1

フレームセットを使用する Web ページがあります。

スクリプトとオブジェクトの依存関係により、特定の順序でフレームをロードする必要があります。

この例をテンプレートとして使用しました: The JavaScript Source: Navigation: Frames Load Order

これにより、最後にロードする必要があるページの代わりに空のページがロードされ、最初のページがロードされた後に正しいページに置き換えられます。

ただし、ブラウザの [戻る] ボタンも使用する必要があります。上記のリンクでサンプルを実行し、両方のフレームをロードしてから [戻る] ボタンをクリックすると、上部のフレームが一時的な空白ページに戻ります。フレームセットの前のページに移動するには、[戻る] ボタンを再度クリックする必要があります。

この [戻る] ボタンの動作なしでフレームを特定の順序で強制的にロードする方法はありますか? または [戻る] ボタンに空のページを強制的にスキップさせる方法はありますか?

これは、Internet Explorer 6 および 7 で動作する必要があり、できれば Firefox 3 でも動作する必要があります。

4

3 に答える 3

1

あなたはこの投稿でこれについてかなり言及しています...

これはレガシーシステムです。フレームセットが必要です。

レガシー システムで作業している場合は、ブラウザの戻るボタンに関してフレームセットがどのように動作するかを受け入れる時が来たと思います。本当にレガシー システムである場合、この動作を修正する必要はありません。それが実際にはレガシー システムではなく、この問題を解決する必要がある場合は、フレームセットの使用を避ける必要があります。フレームセットは HTML 標準から廃止されたため、使用しないでください。

于 2010-04-22T07:26:42.837 に答える
0

JavaScript を使用してフレーム自体を作成します。

<html>
<head>
<script>
function makeFrame(frameName) {
    var newFrame = document.createElement('frame');
    newFrame.id=frameName;
    if(frameName=="B") {
        newFrame.onload=function() {makeFrame("C")};
        newFrame.src = 'http://www.google.com';
    }
    else {
        newFrame.src = 'http://www.yahoo.com';
    }
    document.getElementById('A').appendChild(newFrame);

}
</script>
</head>
<frameset name='A' id='A' rows="80, *" onload="makeFrame('B')"></frameset>
</html>
于 2008-11-14T21:05:15.307 に答える
0

3 つの iframe を目的の順序で使用してから、適切な場所にサイズ変更/移動してみませんか?

<iframe id="a1" src="page-to-load-first.htm"></iframe>
<iframe id="a2" src="page-to-load-second.htm"></iframe>
<iframe id="a3" src="page-to-load-third.htm"></iframe>
<script>
function pos(elem,x,y,w,h) {
   if (!elem.style) elem=document.getElementById(elem);
   elem.style.position='absolute';
   elem.style.top = y+'px';
   elem.style.left= x+'px';
   elem.style.width=w+'px';
   elem.style.height=h+'px';
}
window.onload = function() {
    window.onresize=function() {
        var w = window.innerWidth || document.documentElement.clientWidth;
        var h = window.innerHeight || document.documentElement.clientHeight;
        var w3 = w/3;
        var h2 = h/2;
        pos('a1',0,0,w3,h); /* left 1/3rd */
        pos('a2',w3,0,w3+w3,h2);
        pos('a3',w3,h2,w3+w3,h2);
    };
    window.onresize();
};
</script>
于 2008-11-16T16:43:09.860 に答える