私は実際に少し前にこのようなものを開発しました。
トリック (またはトリック) は、ページを an でラップiframe
し、親ウィンドウで、ページが要求されたときにビューにフェードインし、ページが読み込まれたときにフェードアウトする div 要素を持たせることです。
親ウィンドウは次のようになります。
<!DOCTYPE html>
<html>
<head>
<title>< Page1 ></title>
<style>
html, body{
font-family:helvetica;
}
#fade, iframe {
position:absolute;
left:0px;
top:0px;
width:100%;
height:100%;
border-width:0px;
z-index:-1;
opacity:0;
color:#AAA;
background-color:#FFF;
-webkit-transition: opacity 300ms;
-moz-transition: opacity 300ms;
-o-transition: opacity 300ms;
}
iframe {
opacity:1;
z-index:1;
background-color:#FFF;
}
</style>
</head>
<body>
<div id="fade">
<h1>Loadin..</h1>
</div>
<iframe src="p1.html"></iframe>
<script>
var fade = document.getElementById("fade");
var iframe = document.getElementsByTagName("iframe")[0];
var t = null;
addEventListener("message", function(e) {
if(t!=null)clearTimeout(t);
fade.style.zIndex = "2";
t=setTimeout(function(){
fade.style.opacity = "1";
},0);
}, true);
iframe.addEventListener("load", function() {
if(t!=null)clearTimeout(t);
t=setTimeout(function(){
fade.style.opacity = "0";
},0);
document.title = iframe.contentWindow.document.title;
t=setTimeout(function(){
fade.style.zIndex = "-1";
},300);
}, true);
</script>
</body>
</html>
サブページにはそれぞれ次のコードがあります。
<script>
function go() {
window.parent.postMessage("showLoadScreen", "*");
}
</script>
<a href="somepage.html" onclick="go()">somepage.html</a>
このコードは、要求されたリソースの読み込みに時間がかかっていない限り、フェーダーがポップアップしないという点で少し異なります。しかし、あなたはその考えを理解します。
はiframe
視覚的な目的でのみ存在するため、大きな問題は発生しません。ただし、このコードは HTML5 のpostMessage
API を使用しているため、少し調整する必要があることに注意してください。