网站在php中加载gif


site-onload-gif within php

问题是,网站加载大约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将起作用,但令人敬畏的进一步解决方案:

  1. 如果你需要打开这个页面,既作为要加载的内容(通过AJAX),也作为一个页面,你可以制作两个页面。。每个需求一个。

  2. 如果您只想用作要加载的内容,请删除<html><head>等标记,并修复Javascript以在另一个页面中工作。