惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
SecWiki News
SecWiki News
WordPress大学
WordPress大学
小众软件
小众软件
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
K
Kaspersky official blog
T
The Exploit Database - CXSecurity.com
腾讯CDC
Scott Helme
Scott Helme
I
InfoQ
Cyberwarzone
Cyberwarzone
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Security Latest
Security Latest
The Register - Security
The Register - Security
Project Zero
Project Zero
F
Fortinet All Blogs
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
C
Cisco Blogs
L
LINUX DO - 热门话题
P
Privacy International News Feed
IT之家
IT之家
U
Unit 42
P
Privacy & Cybersecurity Law Blog
H
Help Net Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Palo Alto Networks Blog
F
Full Disclosure
宝玉的分享
宝玉的分享
Simon Willison's Weblog
Simon Willison's Weblog
L
Lohrmann on Cybersecurity
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
H
Hacker News: Front Page
Know Your Adversary
Know Your Adversary
PCI Perspectives
PCI Perspectives
Hugging Face - Blog
Hugging Face - Blog
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
S
Schneier on Security
Recent Announcements
Recent Announcements
Forbes - Security
Forbes - Security
Cisco Talos Blog
Cisco Talos Blog

博客园 - dangjian

站点的安全防范都是后端的职责?非也,Web前端安全同样不可忽视 【社区公益】送《Web前端开发最佳实践》给需要的人 Web前端开发最佳实践(13):前端页面卡顿?可能是DOM操作惹的祸,你需要优化代码 Web前端开发最佳实践(12):JavaScript代码中有大量写死的配置数据?这些数据难以维护,你需要合理组织这些数据 Web前端开发最佳实践(10):JavaScript代码不好读,不好维护?你需要改变写代码的习惯 Web前端开发最佳实践(11):使用更严格的JavaScript编码方式,提高代码质量 Web前端开发最佳实践(9):CSS代码太太乱,重复代码太多?你需要精简CSS代码 Web前端开发最佳实践系列文章汇总 Web前端开发最佳实践(8):还没有给CSS样式排序?其实你可以更专业一些 Web前端开发最佳实践(7):使用合理的技术方案来构建小图标 Web前端开发最佳实践(6):过时的块状元素和行内元素 Web前端开发最佳实践(5):正确闭合HTML标签,停止使用不标准的标签和属性 Web前端开发最佳实践(3):前端代码和资源的压缩与合并 Web前端开发最佳实践(2):前端代码重构 Web前端开发最佳实践(1):前端开发概述 如何设计一个基于Node.js和Express的网站架构? 如何在ASP.NET中生成HTML5离线Web应用 Web程序员们,你准备好迎接HTML5了吗? 敏捷软件开发之何为敏捷开发
Web前端开发最佳实践(4):在页面中添加必要的meta信息
dangjian · 2015-01-20 · via 博客园 - dangjian

meta标签放置在HTML页面的head中,主要用于标识网站。其中基本上包含了网站的一些描述信息,例如,简介、作者等。这些信息有助于搜索引擎更准确地识别网页的内容,也有助于第三方工具抓取网站基本信息。

按照W3C的标准介绍,<meta>标签有四个属性:name、http-equiv、content和charset。<meta>标签通过name属性来表述页面文档的元信息,通过http-equiv属性设置HTTP请求指令,通过charset设置页面的字符编码。所以从属性设置分类,meta可以分三类:

1. name属性和content属性组合,构成名称/值对,用于描述网站信息

这是标签最主要的功能,使用广泛。标准的meta名称包括:application-name、author、description、generator等。
示例代码:

<!—页面关键字-->

此类型meta使用最广泛,其中,又属keywordsdescription这两个名称的使用率最高,是搜索引擎优化的主要手段之一,推荐大家使用。设置keywords和description这两个meta时,尽量使用简洁和语义明确的词语,下面的示例展示的是BBC新闻网站设置的application-name、keywords和description对应的meta信息:

2. http-equiv属性和content属性组合,设置特定的HTTP指令

根据W3C制定的HTML5规范,指令型meta总共有5种,其中content-type、default-style和refresh已经确定,content-language和set-cookie还未正式确定。

示例代码:

<!—页面加载5分钟后刷新-->

此类型meta应该谨慎使用。<meta http-equiv="content-type">可以使用下面介绍的更简洁的方式代替。不推荐使用<meta http-equiv="refresh">,某些搜索引擎遇到此meta时会停止解析页面剩余的部分。在实际的场景中很少使用。

3. charset属性,设置页面字符编码。

此属性功能单一,提供了一种保存和传输文档的编码格式。

<!—声明文档为UTF-8格式-->

这是在HTML5中新加入的meta类型,在HTML5的规范中,如下两种页面编码设置是等价的:

代码中的第二种形式更简洁好记,并且得到了所有主流浏览器的支持(尤其是IE8、IE7和IE6),所以不存在浏览器兼容问题,推荐在设置页面编码时使用。为了让浏览器能准确失败编码格式,务必在<title>标签之前设置charset,保证标题能正确显示。示例如下:

以上介绍了三种规范中定义的meta格式, 如果想要了解更详细的内容,可以参考W3C的规范,规范中很详细地描述了meta的种类及其作用。

除了规范中定义的这些meta之外,还有大量的自定义meta类型。这些meta类型主要是有互联网公司或者浏览器厂商为了实现特定的功能而定制的,W3C规范中容许自定义meta类型,但为了防止自定义的meta名称重复,所以所有的自定义meta应该事先注册。目前已经有很多注册的自定义meta,以及一些厂商自定义名称 和自定义的指令 。这些自定义的meta并不能通过W3C提供的标准校验,但并不是说这些meta不标准。下面介绍一些常用的meta。

1 设置IE浏览器的兼容模式

从IE8浏览器开始支持一种设置页面兼容模式的meta类型,示例代码如下:

根据HTML规范,浏览器是按照页面开头定义的文档类型来解析页面的。比如,使用HTML5的文档类型声明:

IE就会以标准模式解析HTML文档。但是某些已有页面由于各种原因不能在最新标准模式下正确显示,只支持特定的标准。针对这种状况,IE浏览器提供了一种兼容的方案,通过设置X-UA-Compatible指定页面在IE浏览器中渲染时执行的标准。在IE浏览器中,此设置的优先级高于通过DOCTYPE设置的文档标准。有关此meta的具体使用方式可参考微软网站中的相关介绍 。在实际的项目中应该谨慎使用此方式,当在IE浏览器中出现兼容问题时,最好的做法是修改页面,编写规范的HTML代码,让页面支持最新的标准,而不是设置IE的兼容模式。

此设置还有一种常见的设置值,即:

很迷惑吧,IE定义的meta为啥会出现chrome呢?其实设置为chrome=1时,则会在IE9及以下浏览器中激活Chrome Frame ,强制IE使用Chrome Frame渲染页面。

2. 设置页面在移动设备中的显示

一般针对移动设备优化的网页都会添加如下一条mata设置,使得网页在移动设备中显示正常,设置的代码类似如下的代码语句:

3. 设置IE浏览器的“固定网站”功能

这是IE浏览器的独有功能,是从IE9开始支持的,它能够将网站如同应用程序一样固定在Windows Vista及以上版本系统的任务栏中,并且在点击图标后显示网站相关的菜单列表。此功能可以通过定义网页meta来实现,如下代码用于展示人人网 首页中添加的meta定义:

添加到系统的任务栏后的效果如图3-7所示,可以看到在图标上点击右键后弹出的菜单中包含有五项定义的菜单项,点击这些菜单项则可以跳转到对应的页面中:

image

图 人人网网站定义的网站导航菜单

如果想更深入地了解具体如何设置对应的meta来实现此功能,则可以参考微软提供的详细文档

附录