php中的site-onload-gif

时间:2013-12-10 23:52:05

标签: javascript php onload

问题是,网站加载大约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>

我尝试了一些解决方法,但经过搜索&amp;测试大约三个小时我放弃了...... 提前感谢您提供的任何帮助! :-D

1 个答案:

答案 0 :(得分:0)

添加我在你的问题评论中所说的内容,我制作了一个代码,通过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页面在网页中以单页打开,因此它包含<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以在其他网页内工作。