应该为公共网站选择哪个 HTML 版本
Posted
技术标签:
【中文标题】应该为公共网站选择哪个 HTML 版本【英文标题】:Which HTML version should be chosen for a public website 【发布时间】:2011-06-13 06:01:46 【问题描述】:我目前正在开发一个网站。在学习了 html5 及其特性之后,我想继续使用它。我想使用离线存储、数据属性、简单聊天支持等功能,但由于 HTML5 还没有得到很好的支持,我有点困惑。到目前为止,我一直使用 XHTML 1.0 过渡版;我应该继续使用它还是应该使用 HTML5?
我已经看到像谷歌这样的网络巨头已经完全转向 HTML5。
【问题讨论】:
是的,我的意思是 HTML5 中的这个功能 html5demos.com/web-socket 因为乔布斯,一些人似乎认为许多不相关的东西是 HTML5 的一部分。更仔细地查看演示以获取相关信息。如果您创建一个公共网站(例如公司),那么现在改用 HTML5 方法还为时过早。 @neXib:你为什么要把史蒂夫乔布斯的名字放在那里?现在开始使用 HTML5 还为时过早。您只需要为使用不太现代的浏览器的用户提供仍然能够看到某些内容的可能性。顺便说一句,通过不太现代的浏览器,我指的是 IE 7-8。 @Alerty:因为他大肆宣传 HTML5 与 Flash,这就像 Apple 与 Orange(没有双关语)。人们吹捧 HTML5 的很多东西都与 HTML5 无关,而是单独的技术,可以更好地与 HTML5 等更好的工具集一起使用。显然我支持 HTML5 并且我很想使用它,但是没有人会为了钱做这项工作会花费数小时和数小时在 HTML5 上,然后创建大量的后备,这是不明智的。只是我的意见,作为一个长期的网页设计师,并不意味着要专横:) @neXib:我知道到明天早上所有浏览器都不会完全支持 HTML5。然而,一些功能已经准备好,这些功能可以在 Chrome、Firefox、Opera 和 Firefox 中使用。更不用说微软终于在 IE9 中加入了它。为什么要惩罚那些使用可以运行它的浏览器的人?只有 ios 版本的 Safari 不支持 Flash。那有什么问题?例如,您能想象用户尝试在 iPhone 上玩 Flash 游戏的噩梦吗?您如何定义每个行为,例如用户在小触摸屏上的输入?不值得。 【参考方案1】:完全取决于网站的用户,以及他们的浏览器支持哪些功能。正如 SLaks 所说,HTML5 不是一个孤注一掷的命题。
Mark Pilgrim 有两章很好地介绍了通过 javascript 检测对 HTML 功能的支持(这是唯一可靠的方法):
http://diveintohtml5.ep.io/detect.html http://diveintohtml5.ep.io/everything.html您在这里使用开发人员一直用于前端 Web 代码的相同方法 - 以这样一种方式使用新功能,即没有该功能的用户仍然可以使用该网站,即使体验不是“对他们来说很光滑。
【讨论】:
【参考方案2】:HTML5 功能
如果您指的是 HTML5 功能,您必须了解 HTML5 的真正含义。我会定义它具有先前规格的高潮以及更新和更丰富的功能。它旨在支持现有内容(向后兼容)并支持 Web 应用程序的创建。真正令人敬畏的是,它不仅止于此。它首次说明了浏览器应该如何处理错误。
现在,您需要知道并非所有功能都在浏览器中实现。您可以通过HTML5 browser test 了解哪些有效,哪些无效。这并不意味着他们不会工作!大多数浏览器实际上允许您使用和设计您想要发明的任何元素。新的 HTML5 标签在不支持它们的浏览器中没有默认样式。
以下 CSS 代码对于大多数浏览器来说已经足够了:
section, article, header, footer, nav, aside, hgroup
display: block;
与往常一样,Internet Explorer (IE) 有特殊需求。只是,有一个名为 Remy Sharp 的 JavaScript 魔术师,他创建了一个 JavaScript 文件,为 IE 创建了每个元素。所以你可以在你的页面中添加这个:
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"
</script>
<![endif]-->
顺便说一句,您将不得不使用 JavaScript 来测试新 HTML5 元素的存在,并为那些浏览器不符合某些 HTML5 元素和属性的用户提供替代选择。这就是为什么你可以使用这个小的通用 JavaSCript 函数来做到这一点:
function elementSupportsAttribute(element, attribute)
var test = document.createElement(element);
if(attribute in test)
return true;
else
return false;
最后一点,我从HTML5 For Web Designers 这本书中获得了大部分信息。向杰里米·基思致敬!
HTML5 文档类型
如果你的意思是新的文档类型一<!DOCTYPE HTML>
,这就是我要说的......
在 HTML5 中使用以前 HTML/XHTML 版本的功能并不违法。请注意,新的 doctype 没有与之关联的任何数字。这是因为它旨在建立在现有规范的基础上并且对未来版本有效。因此,我说您使用新的文档类型。
您可以查看 W3C 网站上的spec。简而言之,规范是这样说的......
8.1.1 文档类型
DOCTYPE 是必需的序言。
旧版需要 DOCTYPE 原因。省略时,浏览器倾向于 使用不同的渲染模式 与某些不兼容 规格。包括 DOCTYPE 在文档中确保浏览器 尽最大努力 遵循相关规范。
[...]
出于 HTML 的目的 无法输出 HTML 的生成器 带有短 DOCTYPE 的标记 “
<!DOCTYPE html>
”,一个 DOCTYPE 遗产 字符串可以插入到 DOCTYPE(在定义的位置 以上)。
【讨论】:
【参考方案3】:与其他语言不同,您不必在 HTML 5 和 XHTML 之间进行选择。我认为您的问题来自于在 HTML 源代码顶部看到 DOCTYPE
字符串。您应该包含一个DOCTYPE
,但这对浏览器支持无关紧要。
要问的正确问题是浏览器是否支持您要使用的功能。每个浏览器都支持 HTML 5 的一些 特性,因为 HTML 5 的大部分内容与 HTML 4 和 XHTML 相同。考虑您的目标受众以及他们可能使用的浏览器,然后查看这些浏览器对您想要使用的功能的支持程度。
简而言之,您不必决定是否要使用 HTML 5,您需要逐个功能地单独决定该功能是否得到足够好的支持(无论该功能是否是 HTML 5 特定功能与否)。
这是浏览器支持某些 HTML 5 新功能的好资源:http://www.findmebyip.com/litmus
【讨论】:
-1:HTML5 与以前的规范不同。它建立在它们之上并具有多个新功能!顺便说一句,它是“HTML5”而不是“HTML 5”。【参考方案4】:HTML5 是一组大部分不相关的功能。
您可以使用任何您想要的功能;你只需要注意which browsers support which features。
【讨论】:
是的,你是对的,即使我找到了一些 JavaScript 库来了解浏览器上的哪些功能......但是有没有办法在服务器端知道这一点?据我所知,我们无法从用户代理字符串中获取此信息 是的,你可以,但这是个坏主意。以上是关于应该为公共网站选择哪个 HTML 版本的主要内容,如果未能解决你的问题,请参考以下文章