jQuery .load()运行与body显示相同



我有一个项目,需要包括外部HTML到我的页面。所以这个文件将被包含到许多页面。这里我用的是jQuery。让我展示一些代码:

$(document).ready(function(){
$('myBody').load('myExternal.html');
});

它当然运行…但是,外部文件加载后,我的页面已经加载。我想要的是,当我的页面被加载时,外部文件也直接显示,而不需要等待一段时间。有人能帮忙吗?我感谢你所有的帮助

外部文件被延迟的原因是,只有在整个基本文档已经加载并准备好之后才触发.load()函数。这意味着您的外部文件将至少延迟到请求的时间,加上jQuery或其他任何开销。

jQuery.ready()方法"提供了一种运行JavaScript代码的方法,只要页面的文档对象模型(DOM)变得可以安全操作。"这意味着当您的load函数运行时,文档已经显示给用户,您必须等待浏览器获取外部文件。

使用Ajax客户端加载页面部分可能会导致缓慢、繁琐或无法使用的网页,因为用户需要等待这些部分才能使用网站。此外,由于各种原因,部分可能根本无法加载。许多关注隐私的浏览器禁用Javascript,一些旧的浏览器可能不支持您的代码使用的功能,客户端的互联网可能不稳定,或者其他任何事情。将整个页面作为来自服务器的基本文档的一部分要好得多。

也就是说,看看Apache服务器端包含(相当于nginx,如果你使用它)。这不是一个Javascript解决方案,但应该可以实现您想要的。这些章节将在文件离开服务器之前包含,而不是客户端在运行时加载它们,从而节省了大量的开销时间和可能的问题。

如果你真的想使用Javascript,考虑显示一个"please wait"直到整个页面(包括外部部分)被加载。之后,去掉"请稍候";并显示页面

相关内容

最新更新