2012-04-22 82 views
4

我在HTML5中有一个WebApp。异步加载网页

这里是link

我想异步加载整个网页。就像访问网页时一样,我想向用户显示一个加载图像,并且页面在后台完全以异步模式加载。我试图加载脚本异步,但它并没有太大的影响它的行为。

有没有一种方法,这是可能的!

回答

1

尝试使用与Tobias Krogh建议的相同方法。

但是,而不是将在#main内容通过使用普通的旧JS

document.body.innerHTML = request.responseText; 

使用jQuery把内容在体内使用的.html()

$("body").html(request.responseText); 

编辑: 并使用JS加载器加载CSS。 可能的LazyloadYepNope,以加载它们异步。 这应该做的工作!

+0

工作过,但仍然遇到脚本问题 – 2012-04-22 18:40:52

2

呈现一个空的身体,只有具有收纳图像作为背景组...的头你有一个脚本标签,做对DOM准备一个Ajax调用并加载所需的内容......

编辑:当然期望的内容应包含所需要每隔标记和脚本标签......然后与响应更新身体

document.body.innerHTML = request.responseText; 

编辑2:我建议写头脚本本地JavaScript,你只需要更少< 1kb使一个干净的(甚至跨浏览器ajax工作)调用一个定义的url ...在你的ajax响应你可以s没有任何东西会被覆盖或加载两次(除了可能的阿贾克斯功能,如果你加载库)

+1

我试过这个!但问题是内容正在显示,但脚本没有在页面上运行 – 2012-04-22 13:15:15

+0

因此,该应用程序只是不再工作 – 2012-04-22 13:24:14

0

你可以设法通过设置某种叠加与加载器在你的CSS是可见的(在第一次)和以后后您的网页完全加载,去除覆盖与JavaScript编程(淡出出来)...

像这样的事情http://jsfiddle.net/6Ldyd/

当然,你应该做出某种回调函数的最后一个元素之后,除去覆盖您的页面已加载(或在加载最后一个元素后调用它的脚本)

+0

但这又必须预先加载所有元素,所以它仍然会很慢。通过ajax加载主体肯定是一个更好的选择。 – gopi1410 2012-04-22 11:24:37

+0

如果您将css文件放置在页面顶部(html文件)以及页面底部的脚本中,只要浏览器收到响应数据的第一个KB,就会渲染覆盖div。因此,用户将在覆盖图上看到加载器,并等待其余脚本/ html加载。 – drinchev 2012-04-22 11:31:37