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最常见的用法,在制作网页时, ...
随机推荐
- SQL server 跨库插入数据
1.INSERT INTO SELECT语句 语句形式为: Insert into Table2(field1,field2,...) select value1,value2,... from Ta ...
- java remote debug
1. java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar test.jar 2.会出现Listening for ...
- js中push()方法
直接上代码: var roleIdsTemp = []; $("#addRole .modalcheckbox-all").each(function(key, value) { ...
- objective-c中字符串长度计算
我们知道,在c语言中,使用sizeof ()计算在内存中占用的字节数, 引用string.h后,使用strlen()计算字符串的长度(不包含\0). 而在object-c中, "length ...
- jQuery easyUI框架中经常出现的问题
相信开发者对于我们jquery来说都不会陌生吧,jquery为我们的开发提供了很多各式各样的库,满足各种开发的需求,其中我们知道的有轻量级的,但是也有一些基于富客服端的一些重量级库,顾名思义,当我们在 ...
- APACHE 与IIS同时存在的情况下,给APACHE添加反向代理 共用80端口
一.首先打开IIS,将IIS的端口改成81,不要让IIS占用了80端口 二.打开APACHE的httpd.conf配置文件,将里面的端口配置成80 三.打开APACHE的虚拟目录配置文件,如:http ...
- [转]python yield
任何使用yield的函数都称之为生成器,如: def count(n): while n > 0: yield n #生成值:n n -= 1 另外一种说法:生成器就是一个返回迭代器的函数, ...
- 网站开发常用jQuery插件总结(四)验证插件validation
在网站开发过程中,有时我们需要验证用户输入的信息是否符合我们的要求,所以我们会对用户提交的数据进行验证.验证分两次进行,一次是在客户端,一次是在服务端.客户端的验证可以提升用户的体验. jquery验 ...
- JavaScript学习总结【8】、面向对象编程
1.什么是面向对象编程 要理解面向对象,得先搞清楚什么是对象,首先需要明确一点这里所说的对象,不是生活中的搞男女朋友对象,面向对象就是面向着对象,换在代码中,就是一段代码相中了另一段代码,自此夜以继日 ...
- mybaits不能出现小于号
org.xml.sax.SAXParseException; lineNumber: 146; columnNumber: 54; The content of elements must consi ...