让多个HTML页面 使用 同一段HTML代码
需求背景
一个网站有多个网页;一个网页,可以分为很多部分,举个例子,下面是一个特别简单的网页结构:

一般情况下,footer都是用于标识网站的相关信息(备案、联系方式、制作方),每一个页面都是相同的,如果又100个这样的页面,如果在每一个页面都写这么一段html代码,那么,无疑是特别难受的,另外,这个也不利于修改,一旦要修改,每个页面都要改一次,即使利用编辑器的全局替换,那也是不放心的,万一有一个页面在写代码的时候,和其他页面有点不同,全局替换也是有问题的。
PHP解决
如果有用过php的话,就知道,可以将footer的html代码单独写在一个footer.html文件中,然后在每一个页面的footer位置,加一行include代码即可:
<?php include "footer.html" ?>
JSP解决
如果是jsp的话,可以使用一个include指令即可:
<%@ include file="footer.html" %>
问题
如果你的项目,前端和后端没有分离(一个代码库),那就没多大问题,反正后端和后端都是一组人写。
如果你的前端和后端相分离(两个代码库),那么修改两个代码库的代码,无疑是有点麻烦,单着还不是问题。问题是:在当今精通某种技术的时代,既擅长前端又擅长后端的程序员也并不多。
更大的问题:运行环境。
1、如果线上服务器没有安装php怎么办呢?
2、如果后端不是使用java,不用tomcat当服务器,那怎么能用jsp呢?
服务器端渲染 与 客户端渲染
php和jsp属于服务器端渲染,依赖于服务器的软件,所以会有点局限性。
但是,浏览器的DOM渲染,是属于客户端渲染,DOM渲染的问题就几乎没有了,正好,操作DOM的JavaScript是每个浏览器都支持的(DOM渲染可能会比服务器端渲染要稍微慢一点)。
JavaScript解决
可以这样做, 在footer的位置,只写一个<div>标签, 并且设置标签id:
<div id="footer"></div>
定义一个JavaScript的函数,内容如下,目的就是设置上面这个<div>的innerHTML
/**
* 用户填充footer内容的代码
*/
function fillFooterDOM() {
var footer = document.getElementById("footer"); var content = "";
content += "所有页面都要显示的内容,放到这里" footer.innerHTML = content;
}
将上面这个函数,放到每一个前端页面都会加载的js文件中(公共文件),并且在window.onload中调用这个函数即可。上面用的是原生的JavaScript,考虑到兼容性,可以使用JQuery来实现,然后在$(document).ready()中调用这个方法
让多个HTML页面 使用 同一段HTML代码的更多相关文章
- 所有城市list每次从页面花1段时间抽取后写入到数组,
所有城市list每次从页面花1段时间抽取后写入到数组,
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...
- 请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框。程序可以判断出用
请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框.程序可以判断出用 户点击的是“确认”还是“取消”. 解答: <HTML> <HEAD> <TI ...
- angularjs中向html页面添加内容节点元素代码段的两种方法
第一种方式:原生JS向html页面添加内容节点元素代码段: <!DOCTYPE html> <html> <head> <meta charset=" ...
- js实现类似页面广告一段时间自动打开一段时间自动关闭的功能
js实现类似页面广告一段时间自动打开一段时间自动关闭的功能 一.总结 Window 对象的 open()方法:window.open('测试页面.html','news','height=300,wi ...
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. 不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...
- 有一段<script>代码,效果是点击<p>就会弹出信息,但是有的<p>点击会有效果,有的没有效果
问题:有一段<script>代码,效果是点击<p>就会弹出信息,但是有的<p>点击会有效果,有的没有效果 解决: 页面代码是至上而下执行的,如果你的这个标签在< ...
- HTML页面弹出窗口调整代码总结
弹出跟你当前的窗口有没有菜单工具栏没有关系,你只要在页面中写一个脚本它就弹出了.比如<a href=# onclick="window.open('xxx.aspx','窗口名称',' ...
- 因一段JavaScript代码引发的闲扯
前两天,一朋友给我发了一段JavaScript代码: function f1(){ var n=999; nAdd=function(){ n+=1 }; function f2(){ alert(n ...
随机推荐
- .Net Core 实践 - 使用log4net记录日志(2)
实现目标:将log4net的相关操作封装成一个 .Net Standard类库 demo地址:https://github.com/PuzzledAlien/log4net_demo/tree/mas ...
- Spring框架基础(下)
log4J 导入log4J.jar 创建log4J.properties # Create a file called log4j.properties as shown below and plac ...
- mac IntelliJ Idea添加schema和dtd约束提示
打开设置 找到Schemac and DTDs 配置约束文件
- 【转】js程序中美元符号$是什么
$符号在php中是表示变量的特征字符, 在js中它也有很多作用, 一般我们用来命名一个函数名称,获取id的1.首先可以用来表示变量, 比如变量 var s='asdsd'或var $s='asdasd ...
- windows相关命令记录
1.regedit 打开注册表 2.services.msc 打开服务列表 3.net start/stop 服务名 打开/关闭服务,例:net start mysql57,可以通过服务列表开启/关闭 ...
- gitbook 入门教程之导出电子书
gitbook 既可以将源码文件单独输出,也可以仅输出单个文件,常见的导出电子书格式主要有三种(ePub, Mobi, PDF),而这三种格式都依赖于系统本身提供的 ebook-convert 工具. ...
- git rebase 使用详解
rebase 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支. $ git checkout -b mywork origin 现 ...
- C# Tostring()方法
在C#中 JArray japroimg = new JArray(); strproimg.ToString();这样会导致tostring之后的字符串中会有大量的空格 使用 japroimg.T ...
- Kafka 特性
Kafka 特性 标签(空格分隔): Kafka 支持多个生产者 多个生成者连接Kafka来推送消息,这个和其他的消息队列功能基本上是一样的 支持多个消费者 Kafka支持多个消费者来读取同一个消息流 ...
- 对于windows操作系统磁盘访问权限修改的手残教训
最近公司新配置的win10电脑,由于测试关于windows系统上项目的安装程序时默认使用了c盘安装,发现安装后的项目不是崩溃就是运行没结果的,偶然间发现同一个安装程序在d盘或其他非系统盘安装则正常.很 ...