包括需要很长时间才能加载,您可以看到它们正在加载

Posted

技术标签:

【中文标题】包括需要很长时间才能加载,您可以看到它们正在加载【英文标题】:Includes taking a long time to load and you can see them loading 【发布时间】:2016-12-16 20:44:03 【问题描述】:

我将一个 html 文件包含在另一个文件中,作为重用我的标题和导航生成逻辑的一种方式。

问题在于,当我浏览我网站上的页面时,我可以看到包含文件中的的 HTML 首先加载。只有这样您才能看到之后加载的菜单和横幅。我希望所有内容都显示为同时加载。

这是rendered HTML。

这里有一段代码 sn-p 向您展示了我是如何生成这些页面的:

<!DOCTYPE html>
<html lang="en">

<head>
    <script src="assets/js/jquery-2.1.3.min.js"></script> 
    <script> 
    $(function()
      $("#includeHeader").load("includes/templates/header.html");
      $("#includeNavigation").load("includes/templates/navigation.html"); 
    );
    </script>
    <div id="includeHeader"></div>
</head>

<body>

    <div id="wrapper">

        <!-- Navigation -->
        <div id="includeNavigation"></div>

我目前正在使用代码尝试将任何外部库/CSS 移动到页面底部而不是页眉中。但到目前为止,这并没有真正改变或改善任何事情。

【问题讨论】:

您好,如果您从静态路径加载 HTML,您应该真正使用服务器端语言,例如 php。如果你真的需要使用 javascript,你不需要使用 doc ready。例如$(...)(简写) @MrBizle ,是的......我在这台服务器上唯一可用的服务器端语言是 lua。我将不得不四处寻找如何将 lua 嵌入 html / 反之亦然。 【参考方案1】:

您应该使用其中一种模板语言。

如果您的包含是简单的 HTML 文件,那么您可以使用 Handlebars 或 Dust - 您只需复制代码即可,然后在 Javascript 中您只需渲染这些模板 - 请参阅文档。

您可以改用Jade/Pug,但它的语法与 HTML 不同,所以这不仅仅是复制粘贴的问题。

【讨论】:

我喜欢这个主意! +1!【参考方案2】:

您正在使用$(handler) 加载它们,这是$.ready() 的表单。因此,它会等待文档加载所有内容,然后再加载您的 header.htmlnavigation.html

试试

  <head>
    <script src="assets/js/jquery-2.1.3.min.js"></script> 
  </head>
  <body>
    <div id="includeHeader"></div>
    <script> 
      $("#includeHeader").load("includes/templates/header.html");
      $("#includeNavigation").load("includes/templates/navigation.html"); 
    </script>
  </body>

【讨论】:

在 head 标签下定义 div 标签很奇怪。 :) @HareshVidja,是的,我刚刚意识到并正在修复。我只是在不知不觉中从 OP 复制过来的。【参考方案3】:

您的问题是 load 函数在 document.ready 事件触发之前不会运行。这可能是在您的页面开始呈现之后。要让所有内容同时出现,您可以使用 .load 的回调来显示所有内容。所以一切都是隐藏的,

$( "#result" ).load( "ajax/test.html", function() 
    /// show your stuff
);

您当然需要知道两者都已加载。

我建议不要使用 javascript 从静态路径呈现 HTML,而是使用服务器端语言来提高速度。

【讨论】:

好的。我熟悉 php,但我在这个特定服务器上唯一可用的语言是 lua。将不得不找到一些资源来告诉我如何在 html 中嵌入 lua,反之亦然,我猜【参考方案4】:

我认为它不会等待加载所有 dom 元素,它可以提高一定程度的速度,我正在考虑 #includeNavigation 元素在 #includeHeader 元素下

  <head>
    <script src="assets/js/jquery-2.1.3.min.js"></script> 
  </head>
  <body>
    <div id="includeHeader"></div>
    <script> 
      $("#includeHeader").load("includes/templates/header.html", function(data)
          console.log("header loaded");
          $("#includeNavigation").load("includes/templates/navigation.html", function(data)
                 console.log("navigation loaded");
          ); 
      );
    </script>
  </body>

【讨论】:

这对我来说根本不起作用。没有任何内容。 请检查控制台日志...检查是否未找到错误然后检查 url 或尝试使用完整的 url。

以上是关于包括需要很长时间才能加载,您可以看到它们正在加载的主要内容,如果未能解决你的问题,请参考以下文章

Excel 加载项需要很长时间才能保存

从图像 URL 加载图像需要很长时间才能显示

PHP页面需要很长时间才能加载

从 IPersistMoniker 加载需要很长时间才能加载无法解析的 URL

谷歌图表需要很长时间才能加载

IconData 需要很长时间才能加载并且不显示图标