2013年3月22日金曜日

[jQuery]iframeのスムーズな切換え

最近ではあまり使われなくなっている Frame 関係だけど、業務アプリケーションではまだまだ使っていることも多い。

iframe のコンテンツを切り替える際に iframe 内が真っ白になってしまう。
切換え先のページのロードが重たければ、白い画面がしばらく表示されることになるのだが、なんとかならんか〜と考えてみた。

結論から言うと、iframe  を div タグ内に入れて、div タグをフェードイン/フェードアウトさせればフワフワっとページを切り替えることが出来る。

フェードインは iframe の loaded イベントで行う。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" language="javascript" src="jquery-1.9.0.min.js"></script>
    <script type="text/javascript" language="javascript">
var index = 0;
var pages = new Array("aaaa.html", "bbbb.html");
function frameChange(){
    $('#contents').animate({ opacity: 0 }, 500, function () {
        $('#contents').css("visibility", "hidden");
        main.location.href = pages[index];
        index++;
        index = index % 2;
    });
}
function loaded(){
    $('#contents').css("visibility", "visible");
    $('#contents').animate({ opacity: '1' }, 800, function () {

    });
}
    </script>
</head>
<body style="background-color:Black;">
<input type="button" value="切替" onclick="frameChange()">
    <div id="contents">
        <iframe name="main" id="main" scrolling="no" onload="loaded();"/>
    </div>
</body>
</html>


0 件のコメント:

コメントを投稿