HTML Meta, http-equiv, Refresh
原文:
http://www.lifelaf.com/blog/?p=481
在HTML页面中,如果想实现定时刷新或重定向,我们可以使用meta标签的refresh功能:
<!-- 5秒后刷新页面 -->
<metahttp-equiv="refresh"content="5">
<!-- 5秒后重定向到http://example.com -->
<metahttp-equiv="refresh"content="5; url=http://example.com">
那么,meta标签是什么?http-equiv又是什么?这种refresh方式如何使用?而它又有哪些好处呢?
meta标签
顾名思义,meta标签的作用是对HTML页面的元数据信息进行描述,从而为浏览器的渲染提供更多的信息。一个HTML页面可以包含多个meta标签,而每一个meta标签则用键值对的方式保存一条元数据:
<metaname="key_here"content="value_here">
值得注意的是,在HTML中meta标签是没有结束标签的,而在XHTML中则与之相反,meta标签必须被显式的关闭。
http-equiv
在meta标签中,有一类特殊的key类型,叫做http-equiv。根据W3C的定义,http-equiv可以在meta标签中替代name,如果这么做的话,HTTP服务器会把http-equiv属性及其值放在HTTP response的响应头里面(http://www.w3.org/TR/html401/struct/global.html#h-7.4.4.2):
The http-equiv attribute can be used in place of the name attribute and has a special significance when documents are retrieved via the Hypertext Transfer Protocol (HTTP). HTTP servers may use the property name specified by the http-equiv attribute to create an [RFC822]-style header in the HTTP response.
问题是:目前没有一个HTTP服务器是这么做的(http://stackoverflow.com/questions/5236900/meta-http-equiv-is-it-sent-as-part-of-an-http-header-or-does-the-client-parse)。 原因很明显,如果要这么做的话,HTTP服务器就得预先解析所有的HTML文件并缓存所有的http-equiv键值对,而这是一个不小的开销。我们可以 做一个有趣的小实验,编写一个含有http-equiv值的HTML文件并部署到HTTP服务器上;用Firefox打开该HTML文件并用 Firebug截取相关的HTTP response,我们会发现http-equiv的内容并没有出现在response的响应头中。
事 实上,http-equiv功能(出现在response的响应头中)的实现不是由HTTP服务器来完成的,而是由浏览器来模拟的。浏览器解析 HTML文档的时候会把http-equiv的键值对当作响应头来处理(如果http-equiv与真正传回来的响应头冲突,http-equiv会覆写 响应头)。
refresh
在http-equiv类型的meta标签中,有一种可用于定时刷新页面:refresh
<!-- x秒后刷新当前页面 -->
<metahttp-equiv="refresh"content="x">
<!-- x秒后重定向到URLLINK -->
<metahttp-equiv="refresh"content="x; url=URLLINK">
<!-- 浏览器打开页面后立即重定向到URLLINK -->
<metahttp-equiv="refresh"content="0; url=URLLINK">
在上面第三个例子中,浏览器一旦打开页面就立即转接到了另外一个URL,为什么会有这么“奇怪”的写法?直接向客户端提供目标地址(URLLINK)不就可以了吗?什么情况下需要这么做呢?
一 个典型的场景是webapp中的首页设置(welcome page)。如果我们需要展示给用户的首页地址只是一个URL而不是一个真实存在的文件,比如/Index.action,那么在web.xml中直接将 Index.action作为welcome page进行设置是行不通的 — webapp将会报错:Index.action文件不存在。而解决方案就是编写一个非常简单的Index.html文件并将其作为首页,在该文件中指 定,一旦文件打开则立即重定向到Index.action:
<!DOCTYPE html><html><head><metahttp-equiv="refresh"content="0; url=Index.action"></head><body></body></html>
与别的方法(在HTTP服务器中设置301,302重定向规则,或在页面中使用JavaScript进行重定向)相比,通过meta标签来实现重定向的好处很明显:
- 简单易用。不需要在Web服务器上进行额外的配置,也不需要编写额外的脚本代码。
- 由HTML标准定义,主流浏览器均支持(模拟http响应头)。
shaochuancs@gmail.com
HTML Meta, http-equiv, Refresh的更多相关文章
- js刷新页面和跳转
javascript返回上一页: 1.返回上一页 history.go(-1); 返回上两个页面 history.go(-2); <a href="javascript:history ...
- 第一篇:web之前端之html
前端之html 前端之html 本节内容 前端概述 html结构 标签探秘 <!DOCTYPE html>标签 head标签 body标签 1.前端概述 一个web服务的组成分为前端和 ...
- 一丶HTML介绍
import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('local ...
- html,css.javascript
基本标签(a.p.img.li.table.div.span).表单标签.iframe.frameset.样式 1:Html (Hypertext Markup Language) 超文本标记语言 ...
- NGINX: 统计网站的PV、UV、独立IP
做网站的都知道,平常经常要查询下网站PV.UV等网站的访问数据,当然如果网站做了CDN的话,nginx本地的日志就没什么意义了,下面就对nginx网站的日志访问数据做下统计: 概念: UV(Uniqu ...
- 黑马程序员_java基础笔记(09)...HTML基本知识、CSS、JavaScript、DOM
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 基本标签(a.p.img.li.table.div.span).表单标签.ifra ...
- 一、html
一.html相关概念 html是 htyper text markup language 即超文本标记语言,超文本就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素,而标记语言:即标记(标签) ...
- meta标签用法总结
注:本文并非本人撰写,摘自百度百科 meta标签用来描述一个HTML网页文档的属性,例如作者.日期和时间.网页描述.关键词.页面刷新等. 一.作用: META标签是HTML标记HEAD区的 ...
- 【131031】<meta http-equiv=...> 的功能
1.定义语言 格式: 〈meta http-equiv=″Content-Type″ content=″text/html; charset=gb2312″〉 这是META最常见的用法,在制作网页时, ...
随机推荐
- Oracle学习第三讲
关联查询 笛卡尔积 指做关联操作的每个表的每一行都和其他表的每一行组合,假设两个表的记录条数分别为x和y,笛卡尔积将返回x*y条记录 例如:select count(*) from emp; sele ...
- jQuery 尺寸
通过 jQuery,很容易处理元素和浏览器窗口的尺寸. jQuery 尺寸 方法 jQuery 提供多个处理尺寸的重要方法: width() height() innerWidth() innerHe ...
- windows注册表的基本使用——示例
上网找好多资料发现一个问题就是太老.例如只有RegCreateKey而没有RegCreateKeyEx用法详解,自己摸索了几个小时终于基本用到的几个函数都试用了一遍. 下面代码已经通过编译测试 // ...
- CodeIgniter框架介绍
入口 index.php :一些路径常量定义: => CodeIgniter.php : 1. 初始化一些 system/core内的类,例如Config, Utf8, URI 和Router等 ...
- PHP IP互换数字[转]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Source kit service terminated Editor functionality temporarily limited
这下可好. Source kit service terminated Editor functionality temporarily limited 运行以下代码出现了以上的提示...另外,还压根 ...
- iOS: 学习笔记, 添加一个带界面约束的控制器
1. 创建一个空iOS应用程序(Empty Application). 2. 添加加控制器类. 修改控制器类的viewDidLoad - (void)viewDidLoad { [super view ...
- 用word2013写博客
第一次使用,添加博客账户时碰到一个奇怪的问题,先输入用户名,然后密码只能输入两个字符,后来先输入密码再输入用户名才解决,很神奇~
- SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆
http://www.cnblogs.com/kissdodog/archive/2013/06/12/3132380.html
- matplotlib 绘图
http://blog.csdn.net/jkhere/article/details/9324823 都打一遍 5 matplotlib-绘制精美的图表 matplotlib 是python最著名的 ...