在显示页面之前等待页面准备就绪

时间:2014-03-19 13:16:53

标签: javascript html

我很确定这是不可能的,但我可能是错的。 我被要求保留一个网页,直到另一个页面准备就绪,然后再显示后者。

考虑例如pageA.html,其中包含指向pageB.html的链接。 pageB有一些创建页面的jScript(实际上是GWT,但假装你不知道)。

用户希望继续显示pageA,直到pageB准备好显示。 这是可能的,保持两页分开吗?

4 个答案:

答案 0 :(得分:1)

你可以看看AngularJS。 (SPA =单页申请)。您可以在当前页面中加载新视图(“页面”)并显示加载程序或当前页面,直到加载完成。

答案 1 :(得分:1)

您可以使用jQuery $(window).load(function(){});并在现有页面上创建叠加层。

即。用户加载页面A,您可以立即看到阻止页面可见性的叠加层。触发加载事件后,您可以删除叠加层。

这与您提出的问题略有不同,但可能是一种方法。

JS Fiddle Example

答案 2 :(得分:0)

你可以使用Javascript和AJax实现这一点

JS on page.html

<script>
  function loadPageB(){
  var html = document.getElementById("html");
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
   {
     html.innerHTML=xmlhttp.responseText;
   }
  }
xmlhttp.open("GET","pageB.html",true);
xmlhttp.send(); 
} 
</script>

HTML页面

<!-- some code here -->
<input type="button" value="go to PageB" onclick="loadPageB()"/>
<!-- some code here -->

在上面的示例中,点击按钮后会加载page.html

答案 3 :(得分:0)

您可以继续检查网址,直到网页存在。这意味着您要重定向到的页面尚未存在,并且将在某个时刻创建。

链接可能是

<a href="javascript:;" onclick="delayRedirectTo('my-generated-page.html');">link text</a>

然后在delayRedirectTo函数中包含一些逻辑。

function delayRedirectTo(path){
    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange=function(){
        // Status will only be 200 when the page exists
        if (xhr.readyState==4 || xhr.status == 200)
        {
            // Redirect to page.
            window.location.href = path;
        }
    }
    window.setInterval(function(){
        xhr.open("GET",path,true);
        xhr.send(); 
    }, 5000); // check every 5 seconds.
}