Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在重定向页面完全加载之前显示加载屏幕图像?_Javascript_C#_Jquery_Html_Asp.net - Fatal编程技术网

Javascript 如何在重定向页面完全加载之前显示加载屏幕图像?

Javascript 如何在重定向页面完全加载之前显示加载屏幕图像?,javascript,c#,jquery,html,asp.net,Javascript,C#,Jquery,Html,Asp.net,我在asp.net应用程序中重定向页面时使用了加载屏幕图像。我使用一个html文件作为导航的中间文件 所以主页上的点击事件是这样的 Div1.onclick = function () { location = "Redirect.htm?page=Default.aspx"; }; 但是,当Default.aspx页面开始加载时,图像在几秒钟后停止旋转 这是我在Redirect.html中的代码 <div style='position:absolute;z-index:9999

我在asp.net应用程序中重定向页面时使用了加载屏幕图像。我使用一个html文件作为导航的中间文件

所以主页上的点击事件是这样的

Div1.onclick = function () {
   location = "Redirect.htm?page=Default.aspx";
};
但是,当Default.aspx页面开始加载时,图像在几秒钟后停止旋转

这是我在Redirect.html中的代码

<div style='position:absolute;z-index:9999;top:40%;left:40%;'>
<img id="imgAjax" alt="loading..." title="loading..." src="images/ajax-loading.gif" style="width:     250px; height: 250px" /><br /> <br />
</div>

<script type="text/javascript">
this.focus(); 
redirect = function() {
    var querystring = window.location.search.substring(1); //first query string
    var page = querystring.substring(querystring.indexOf('=') + 1, querystring.length);
    function toPage() {
        if (page !== undefined && page.length > 1) {
            document.write('<!--[if !IE]>--><head><meta http-equiv="REFRESH" content="1;url=' + page + '" /><\/head><!--<![endif]-->');
            document.write(' \n <!--[if IE]>');
            document.write(' \n <script type="text/javascript">');
            document.write(' \n var version = parseInt(navigator.appVersion);');
            document.write(' \n if (version>=4 || window.location.replace) {');
            document.write(' \n window.location.replace("' + page + '");');
            document.write(' document.images["imgAjax"].src = "/images/ajax-loading.gif"');
            document.write(' \n } else');
            document.write(' \n window.location.href="' + page + '";');
            document.write(' \n  <\/script> <![endif]-->');
        }
    }
    return {
        begin: toPage
    }
} ();

redirect.begin();

/* ]]> */
</script>  



这是focus(); 重定向=函数(){ var querystring=window.location.search.substring(1);//第一个查询字符串 var page=querystring.substring(querystring.indexOf('=')+1,querystring.length); 函数toPage(){ 如果(第!==未定义&&page.length>1){ 文件。写(“”); document.write('\n'); } } 返回{ 开始:toPage } } (); 重定向。开始(); /* ]]> */
如何使图像旋转直到页面Default.aspx完全加载

任何想法都会很有帮助,我们将不胜感激


谢谢。

Default.aspx可以默认显示正在加载的图像,并使用CSS将实际内容标记为隐藏。然后在页面加载完成后,隐藏图像并显示内容html。通过jquery:

$(document).ready(function () {
    $("#theloadingimagediv").hide();
    $("#thehtmlcontentdiv").show();
});

我认为你应该改变你的方法,因为如果你想一想,就没有办法以你现在的方式实现你想要的

  • 浏览器正在显示页面a
  • 用户点击一个链接
  • 脚本运行时,显示加载图像
  • 浏览器接收链接响应,启动开关。脚本在此处停止
  • 浏览器构建页面,很有可能,它看起来像是在流式传输(接收时加载)
  • 浏览器接收完整个页面后,就完成了
主要问题是,您的脚本所做的只是充当两个页面之间的中间层,因此您仍然会落后

我可以提出三个解决方案:

  • 使用Ajax加载页面。 然后你可以显示一个图像,因为它是ajax,没有任何东西会被打断(甚至位置也不会改变),你会得到完美的动画。如果您对此感兴趣,还可以查看AngularJS,这可能会非常有帮助

  • 在您的页面上,在正文中有一个很短的代码块,例如在假内容块中显示图像,并在其末尾设置一个脚本,以在正文加载完成后运行(jQuery有一个函数,但我不记得是什么),以删除假内容块并显示原始内容块。 这可能无法获得最佳效果,因为您无法控制浏览器决定如何显示传入的HTML

  • 在身体上使用iframe,并将其视为“原始页面”。在所有要显示加载的链接上,运行脚本以发送到原始HTML,显示加载,更改iframe,并设置脚本以在iframe的主体完成加载时停止加载图像。 您必须考虑使用此方法隐藏URL的后果(因为用户将主要通过iframe进行浏览)