※ ChatGPTを利用し、要約された質問です(原文:複数画像を最初に読み込んでそれを切り替える方法)
複数画像を最初に読み込んでそれを切り替える方法
このQ&Aのポイント
IEの全画面表示で表示する際、画像の読み込みの為にメニューが出てしまう問題があります。解決方法として、最初に全ての画像を読み込んでから切り替える方法があります。
以下のソースコードは、HTML+JavaScript+CSSを使用して披露宴のスタッフロールを作成する際に、最初に画像を全て読み込んでから切り替える方法を示しています。
具体的なソースコードとして、画像を配列に格納し、タイマーを使用して一定時間ごとに画像を切り替える方法が記述されています。
お世話になります。
披露宴のスタッフロールをHTML+JavaScript+CSSで作りたいです。
IEの全画面表示で表示するのですが、画像を切り替える際、
画像の読み込みの為に右上にメニューが1秒ほど出てしまいます。
これを防ぐためには最初に画像を全て読み込んで、
読み込んだ画像の切り替える方法にしないといけないようですが、
方法がわかりません。(別の解決方でもいいです)
今のソースは以下のようにしています。
<HTML>
<HEAD>
<TITLE>test</TITLE>
<style type="text/css">
</style>
<script language="JavaScript">
<!--
var TIMER="10000"; //スライド切替時間(1秒=1000)
var TIMER_ID="-1"; //タイマーID(スライド停止:TIMER_ID=-1)
var count="0";
var pict = new Array(3);
pict[0] = "./SunSet.jpg"; // この画像はBODYの部分にも指定し、JavaScriptからは表示されない
pict[1] = "./Winter.jpg";
pict[2] = "./BlueHills.jpg";
function TimerStart(){
if(TIMER_ID == -1){
TIMER_ID = setInterval('ChangeImg()',TIMER); //停止中の場合に実行
}
}
function ChangeImg(){
count++;
count %= 3;
document.body.style.backgroundImage="url(" + pict[count] + ")"; //bodyの背景画像変更(*)
}
//-->
</script>
</HEAD>
<BODY onload= "TimerStart()" BACKGROUND="./SunSet.jpg" style="background-color:#000000;color:#ffffff;overflow:hidden;background-repeat: no-repeat;background-position: 50% 50%;">
<FONT SIZE=+2>
<MARQUEE DIRECTION="UP" LOOP="1" SCROLLAMOUNT="3" height="100%">
Aさん<BR>
Bさん<BR>
Cさん<BR>
</MARQUEE>
</BODY>
</HTML>
よろしくお願いいたします。
補足
素早い回答ありがとうございます。 最終的に以下のようになりましたが、 F11で画面を最大化した場合で、かつ、画像が切り替わる瞬間、 右上にメニューが出てしまいます。 画像を読み込んでいるから出るわけではなく、JavaScriptが動いてるか、 または、スタイルシートの背景画像を入れ替えたから出ていると思います。 なんとかする方法はないでしょうか?windows2000とIE6です。 <HTML> <HEAD> <TITLE>test</TITLE> <style type="text/css"> </style> <script language="JavaScript"> <!-- var TIMER="10000"; //スライド切替時間(1秒=1000) var TIMER_ID="-1"; //タイマーID(スライド停止:TIMER_ID=-1) var count="0"; //表示画像のカウント var pict_num = 3; //画像の数 var pict = new Array(pict_num); //画像オブジェクトのポインタ配列 var pict_src = new Array(pict_num); //画像のパスの配列 pict_src[0] = "./SunSet.jpg"; //この画像は初期画像なのでHTMLのBODY部分で表示させる pict_src[1] = "./Winter.jpg"; pict_src[2] = "./BlueHills.jpg"; for(i=0; i<pict_num; i++){ pict[i] = new Image(); pict[i].src = pict_src[i]; // 受信待ちループ wk = 1; while(1){ //ダウンロードが終わったらループを抜ける if(pict[i].complete == true){ break; } //一応、無限ループ対策 if(wk > 30000){ break; } wk++; } } function TimerStart(){ if(TIMER_ID == -1){ TIMER_ID = setInterval('ChangeImg()',TIMER); //停止中の場合に実行 } } function ChangeImg(){ count++; count %= 3; // document.body.style.backgroundImage="url(" + pict[count] + ")"; //bodyの背景画像変更 // document.body.style.backgroundImage="url(" + pict[count].src + ")"; //bodyの背景画像変更 document.getElementById("body_id").setAttribute("background", pict[count].src); //bodyの背景画像変更 } //--> </script> </HEAD> <BODY id="body_id" onload= "TimerStart()" BACKGROUND="./SunSet.jpg" style="background-color:#000000;color:#ffffff;overflow:hidden;background-repeat: no-repeat;background-position: 50% 50%;"> <FONT SIZE=+2> <MARQUEE DIRECTION="UP" LOOP="1" SCROLLAMOUNT="3" height="100%"> 山田太郎<BR> 田中花子<BR> 愛井上男<BR> </MARQUEE> </BODY> </HTML>