需求背景

  一个网站有多个网页;一个网页,可以分为很多部分,举个例子,下面是一个特别简单的网页结构:

   

   一般情况下,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代码的更多相关文章

  1. 所有城市list每次从页面花1段时间抽取后写入到数组,

    所有城市list每次从页面花1段时间抽取后写入到数组,

  2. jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

    jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...

  3. 请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框。程序可以判断出用

    请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框.程序可以判断出用 户点击的是“确认”还是“取消”. 解答: <HTML> <HEAD> <TI ...

  4. angularjs中向html页面添加内容节点元素代码段的两种方法

    第一种方式:原生JS向html页面添加内容节点元素代码段: <!DOCTYPE html> <html> <head> <meta charset=" ...

  5. js实现类似页面广告一段时间自动打开一段时间自动关闭的功能

    js实现类似页面广告一段时间自动打开一段时间自动关闭的功能 一.总结 Window 对象的 open()方法:window.open('测试页面.html','news','height=300,wi ...

  6. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

  7. 有一段<script>代码,效果是点击<p>就会弹出信息,但是有的<p>点击会有效果,有的没有效果

    问题:有一段<script>代码,效果是点击<p>就会弹出信息,但是有的<p>点击会有效果,有的没有效果 解决: 页面代码是至上而下执行的,如果你的这个标签在< ...

  8. HTML页面弹出窗口调整代码总结

    弹出跟你当前的窗口有没有菜单工具栏没有关系,你只要在页面中写一个脚本它就弹出了.比如<a href=# onclick="window.open('xxx.aspx','窗口名称',' ...

  9. 因一段JavaScript代码引发的闲扯

    前两天,一朋友给我发了一段JavaScript代码: function f1(){ var n=999; nAdd=function(){ n+=1 }; function f2(){ alert(n ...

随机推荐

  1. JSON 数据转换

    JSON概述      JSON(Java Script Object Notation)JS对象符号,通常JSON和XML是二选一的,JSON的数据格式很类似于JavaScript的对象 { &qu ...

  2. [Linux] 取两个文件的并集/交集/差集

    uniq -d是只打印重复行 -u是只打印独一无二的行文件A : abcd文件B: cdef取并集:A + B sort A B|uniq 取交集: sort A B|uniq -d 取差集:A - ...

  3. JAVA微信支付接口开发——支付

    微信支付接口开发--支付 这几天在做支付服务,系统接入了支付宝.微信.银联三方支付接口.个人感觉支付宝的接口开发较为简单,并且易于测试. 关于数据传输,微信是用xml,所以需要对xml进行解析. 1. ...

  4. TS学习随笔(七)->声明文件

    now我们来看一看TS怎么声明文件, 在JS里面我们经常会使用各种第三方类库,引入方式也不太相同,常见的就是在HTML中通过script标签引入,然后就可以使用全局变量$或者jQuery了 我们通常这 ...

  5. Android apk安装时出现“解析软件包错误”

    有时候在安装apk的时候会出现解析软件包出错 (Android studio)解决方法如下: 关闭Instant Run功能: File-Settings-...看下图: 将红色框内的勾取消. 如果还 ...

  6. Easyui datagrid 修改分页组件的分页提示信息为中文

    datagrid 修改分页组件的分页提示信息为中文 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 问题描述 默认分页组件为英文展示,如下,希望改成中文展示 ...

  7. C++ 11 Lambda表达式

    C++11的一大亮点就是引入了Lambda表达式.利用Lambda表达式,可以方便的定义和创建匿名函数.对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多 ...

  8. dede 采集到数据后,发布日期变为本地日期解决方法

    找到dede目录下的co_export.php 大概在170行左右 //获取时间和标题 $pubdate = $sortrank = time(); $title = $row->title; ...

  9. huffman树即Huffma编码的实现

    自己写的Huffman树生成与Huffman编码实现 (实现了核心功能 ,打出了每个字符的huffman编码 其他的懒得实现了,有兴趣的朋友可以自己在我的基础增加功能 ) /* 原创文章 转载请附上原 ...

  10. c/c++ 拷贝控制 构造函数的问题

    拷贝控制 构造函数的问题 问题1:下面①处的代码注释掉后,就编译不过,为什么??? 问题2:但是把②处的也注释掉后,编译就过了,为什么??? 编译错误: 001.cpp: In copy constr ...