问题是,网站加载大约20秒或更长时间(用户问题已预先编程)我的解决方案是加载一个预站点,用户可以在其中看到加载屏幕。我在这个html网站上做了这件事,但我想在php中做同样的事情。测试页面为http://kater.selfhost.me/test/
源代码:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script type="text/javascript">
window.onload = function() {
document.getElementById("siteLoader").style.display = "none";
document.getElementById("container").style.display = "block";
}
</script>
</head>
<body>
<div id="container" style="display:none">
<div id="body">
<iframe src="http://kater.selfhost.me/stats/skins.php" frameborder="0" height="2000px" width="1024px"></iframe>
</div>
</div>
<div id='siteLoader'>
<div id='siteDetailLoader'>
<img src='ajax_loader.gif' border='0'>
Please wait while the page loads...<br /> <br />
</div>
</div>
</body>
</html>
我尝试了一些变通办法,但在搜索&测试了大约三个小时,我放弃了。。。提前感谢您提供的任何帮助!:-D
添加了我在你的问题评论中所说的内容,我通过AJAX编写了一个加载此内容的代码:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$( document ).ready(function() {
//Load content
loadAjaxContent();
});
function loadAjaxContent()
{
//VERY IMPORTANT: the URL domain MUST HAVE be the same as your request
//that's why I'm not writting the full http://kater.selfhost.me/stats/skins.php
$.ajax({
url: "/stats/skins.php"
}).done(function(data) {
//remove loader
$("#siteLoader").hide();
//put PHP content
$("#ajaxContent").html(data);
});
}
</script>
</head>
<body>
<div id="body">
<div id="ajaxContent" style="width:1024px;"></div>
<div id='siteLoader'>
<div id='siteDetailLoader'>
<img src='ajax_loader.gif' border='0' />
Please wait while the page loads...<br /> <br />
</div>
</div>
这是在web中加载异步内容最常用的方法。但请注意:http://kater.selfhost.me/stats/skins.php
页面被设置为在web中作为单个页面打开,因此它有<html>
、<head>
、<body>
等标签,因此……将此页面加载到另一个页面后,您将有两个<html>
、<body>
。。标签在同一个页面中,这很糟糕,但现代浏览器有一个很棒的常识,不需要为此烦恼,但你应该知道这一点,并意识到这一点。
它还没有加载的实际问题是,你的内容中有这样的javascript:
<script type="text/javascript"><!--
EXref="";top.document.referrer?EXref=top.document.referrer:EXref=document.referrer;//-->
</script>
我去掉了它,现在工作得很好。记住,这是一个快速的解决方案,我不知道这个JS做什么。
为什么它能在<iframe>
中工作而不能通过AJAX?当您在<iframe>
中打开时,就像在新的浏览器窗口中打开一样。。正如我所说,通过AJAX,它将直接在"父"页面中加载页面内容。
因此,删除这个Javascript将起作用,但令人敬畏的进一步解决方案:
如果你需要打开这个页面,既作为要加载的内容(通过AJAX),也作为一个页面,你可以制作两个页面。。每个需求一个。
如果您只想用作要加载的内容,请删除
<html>
、<head>
等标记,并修复Javascript以在另一个页面中工作。