使页眉和页脚文件包含在多个 html 页面中

IT技术 javascript jquery html css
2021-01-26 01:30:08

我想创建包含在多个 html 页面中的常见页眉和页脚页面。

我想使用javascript。有没有办法只使用 html 和 JavaScript 来做到这一点?

我想在另一个 html 页面中加载页眉和页脚页面。

6个回答

您可以使用jquery完成此操作

将此代码放入 index.html

<html>
<head>
<title></title>
<script
    src="https://code.jquery.com/jquery-3.3.1.js"
    integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
    crossorigin="anonymous">
</script>
<script> 
$(function(){
  $("#header").load("header.html"); 
  $("#footer").load("footer.html"); 
});
</script> 
</head>
<body>
<div id="header"></div>
<!--Remaining section-->
<div id="footer"></div>
</body>
</html>

并将此代码放入header.htmlfooter.html,与index.html

<a href="http://www.google.com">click here for google</a>

现在,当您访问 时index.html,您应该能够点击链接标签。

Patriotic 是对的,它必须在 Web 服务器下运行。
2021-03-14 01:30:08
需要在服务器中运行代码。这意味着 url 需要像“http://.....”。
2021-03-18 01:30:08
有时我想知道人们如何在没有 jQuery 的情况下呼吸。还是有一个.breathe(in).breathe(out)了吗?任何脚本语言在这里都是纯粹的矫枉过正。
2021-03-30 01:30:08
加载或其他导入或使用的功能local file在新版本的 Google Chrome 或 IE 中不起作用,原因:安全!
2021-04-02 01:30:08
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.当我在 chrome 中运行时,我不断收到
2021-04-07 01:30:08

我使用Server Side Includes添加公共部分作为页眉和页脚不需要 HTML 和 JavaScript。相反,网络服务器会在执行任何其他操作之前自动添加包含的代码。

只需在要包含文件的位置添加以下行:

<!--#include file="include_head.html" -->
SSI 需要使用以下文件扩展名:.shtml, .stm, .shtm. 它适用于 Apache、LiteSpeed、nginx、lighttpd 和 IIS。
2021-03-14 01:30:08
@ubershmekel 正如您所说,相关的网络服务器支持 SSI。文件扩展名不限于.shtml,.stm.shtm: 在 IIS 上,所有解析的文件都可能包含 SSI,例如.aspx. 如果使用 PHP,则需要使用 PHPincludevirtual命令来实现相同的结果。
2021-03-23 01:30:08
我喜欢这种老式的方式。事实上,使用脚本来执行如此简单的操作似乎并没有带来太多好处。
2021-04-07 01:30:08
实际上,使用脚本包含文件有很大的缺点:它会影响性能,因为客户端需要下载主页面、加载 DOM、运行脚本才能下载包含文件,这需要每个包含文件额外的服务器请求. 使用服务器端包含包含文件在第一个服务器请求期间为所有元素提供服务,不需要客户端操作。
2021-04-10 01:30:08

你必须在 JavaScript 中使用 html 文件结构吗?您是否考虑过改用 PHP 以便可以使用简单的 PHP 包含对象?

如果您将 .html 页面的文件名转换为 .php - 那么在每个 .php 页面的顶部,您可以使用一行代码来包含 header.php 中的内容

<?php include('header.php'); ?>

在每个页面的页脚中执行相同的操作以包含您的 footer.php 文件中的内容

<?php include('footer.php'); ?>

不需要 JavaScript / Jquery 或其他包含的文件。

注意您还可以使用 .htaccess 文件中的以下内容将 .html 文件转换为 .php 文件

# re-write html to php
RewriteRule ^(.*)\.html$ $1.php [L]
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]


# re-write no extension to .php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
@ Justin808 - OP 没有提到本地托管安装,所以我认为他在谈论基于服务器的文件。
2021-04-04 01:30:08
@Sol 但是,OP 确实提到要使用 Javascript,所以您的回答是题外话。全栈 Web 开发正在迅速完全摆脱使用 PHP,Node.js 提供了所有等效的功能,并且只需要使用 Javascript。TL;DR 请回答问题。OP 想要一个 JS 解决方案,所以给他一个解决方案 PHP、Ruby、Python、C++ 或任何其他语言是不合适的。
2021-04-04 01:30:08

你也可以放:(load_essentials.js:)

document.getElementById("myHead").innerHTML =
	"<span id='headerText'>Title</span>"
	+ "<span id='headerSubtext'>Subtitle</span>";
document.getElementById("myNav").innerHTML =
	"<ul id='navLinks'>"
	+ "<li><a href='index.html'>Home</a></li>"
	+ "<li><a href='about.html'>About</a>"
	+ "<li><a href='donate.html'>Donate</a></li>"
	+ "</ul>";
document.getElementById("myFooter").innerHTML =
	"<p id='copyright'>Copyright &copy; " + new Date().getFullYear() + " You. All"
	+ " rights reserved.</p>"
	+ "<p id='credits'>Layout by You</p>"
	+ "<p id='contact'><a href='mailto:you@you.com'>Contact Us</a> / "
	+ "<a href='mailto:you@you.com'>Report a problem.</a></p>";
<!--HTML-->
<header id="myHead"></header>
<nav id="myNav"></nav>
Content
<footer id="myFooter"></footer>

<script src="load_essentials.js"></script>

我试过这个:创建一个文件header.html

<!-- Meta -->
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<!-- JS -->
<script type="text/javascript" src="js/lib/jquery-1.11.1.min.js" ></script>
<script type="text/javascript" src="js/lib/angular.min.js"></script>
<script type="text/javascript" src="js/lib/angular-resource.min.js"></script>
<script type="text/javascript" src="js/lib/angular-route.min.js"></script>
<link rel="stylesheet" href="css/bootstrap.min.css">

<title>Your application</title>

现在在您的 HTML 页面中包含header.html,例如:

<head>
   <script type="text/javascript" src="js/lib/jquery-1.11.1.min.js" ></script>
   <script> 
     $(function(){ $("head").load("header.html") });
   </script>
</head>

工作得很好。

不错的解决方案,但我认为这会加载 jquery 框架两次,一次用于初始页面加载,其次是在 .load() 方法执行时 - 因为目标页面也包含 jquery。
2021-03-25 01:30:08