我可以使用哪些HTML5标签而不用担心浏览器的兼容性?


93

我正在构建一个可在PC上使用的Web应用程序。为了防止与IE8及更高版本的浏览器出现兼容性问题,需要远离哪些HTML5标签?

注意:关于此主题的大多数问题都是1-3岁。


48
检查caniuse.comhtml5please.com以获取最新的浏览器兼容性信息。
rink.attendant.13年

@deceze任何链接可了解有关垫片的更多信息?
Swagg

4
HTML5 Boilerplate是一个很好的资源
Michael Peterson

47
恕我直言,您不能在Web开发中使用任何东西而不必担心浏览器的兼容性...
Uooo 2013年

2
请参阅HTML5使用的三个级别。可以毫无问题地使用1级内容。2级功能正常降级。如果需要支持较旧的浏览器,则必须使用3级功能。
Mathias Bynens

Answers:


100

您问要远离哪些HTML5标签。

好吧,据我所知,HTML5中的某些标签是出于语义原因而制作的。例如以下内容。

<article> <section> <aside> <nav> <header> <footer> ..ect

这些几乎可以使用,并且只需要一些CSS例如。display: block;可以在大多数浏览器中正常工作,尽管在较旧的浏览器中,即 Internet Explorer,您需要在Javascript中创建一个元素,以使其兼容。

这是一个例子。

document.createElement('article');

将设置该<article>元素以在较旧的Internet Explorer中使用。

对于需要Javascript功能才能工作的更高级的HTML5标签,如下所示。

<audio> <video> <source> <track> <embed> And most importantly <canvas> 

这些元素在较旧的浏览器中很难支持/转换。尽管我在底部提供了跨浏览器polyfill的链接,但是我没有亲自调查它们。

因此,我想说,不需要Javascript功能的任何元素都非常适合与少量的跨浏览器支持代码一起使用。

如果您的定位条件> IE8,那么使用shiv就可以了。

我怎么称呼较旧的浏览器?<IE9

今天的浏览器支持HTML5标签。

<section>, <article>, <aside>, <header>, <footer>, 
<nav>, <figure>, <figcaption>, <time>, <mark>

小于8的Internet Explorer不支持,但可以这样修复。

CSS:

section, article, aside, header, footer, nav, figure, figcaption{
   display: block;
}
time, mark { 
    display: inline-block;
}

Javascript:

var elements = ['section', 'article', 'aside', 'header', 'footer', 'nav', 'figure', 'figcaption', 'time', 'mark'];
for( var i = 0; i < elements.length; i++ ) {
    document.createElement(elements[i]);
}

并且<IE 9中<audio> <video> <canvas>不受支持

<embed>元件具有在部分支持> IE8


您还应该查看此标签。

 <meta http-equiv="X-UA-Compatible" content="IE=edge">

meta标记告诉Internet Explorer以可用的最高IE模式显示页面,而不是进入兼容模式并像IE7或8那样呈现页面。关于此的更多信息。


HTML5助手链接


要开始踢球,您可以签出HTML5 BoilerPlate

有关浏览器兼容性的支持表,请访问-http://caniuse.com/

HTML5 Shiv- https://github.com/afarkas/html5shiv

HTML5 Polyfills列表-https ://github.com/Modernizr/Modernizr/wiki / ...

更新资料

如评论中所述

请小心元标记X-UA-Compatible。如果您使用诸如html5样板之类的东西,并在元素周围有条件注释(html5 doctype IIRC也会发生这种情况),则即使使用标记,也可能会导致IE9强制其进入IE7标准模式。IE再次罢工

您可能需要调查一下,目前我没有任何备份。


另外,如果可以指定,什么是较旧的IE?6,7,8?
斯瓦格

4
一般而言,较旧的IE <IE9
iConnor 2013年

请小心元标记X-UA-Compatible。如果您使用类似html5样板之类的东西,并且在<html>元素周围有条件注释(html5 doctype IIRC也会发生这种情况),则即使使用标记,也可能会导致IE9 出现问题,迫使其进入IE7标准模式。IE再次罢工。
cheezone

感谢您提供的信息,我可以添加到该问题的答案中的任何博客文章或某些信息都将是不错的:)
iConnor 2013年

12

通常,存在问题。

有人告诉我,您的问题是用措辞询问HTML 5 标记的,但是根据您可能找到或编写的任何Javascript查看新功能也是很有用的。

实际上,推荐的方法是测试功能的存在,而不是特定的浏览器。该Modernizr的脚本可能会在这方面有所帮助,但也有报道的在HTML5无法检测功能

某些功能,例如local storage回到IE8。

其他诸如FileReader,则需要IE10 / Firefox21 / Chrome27

有关当前信息,请尝试http://caniuse.com


1
我必须注意,localStorage和fileReader不是HTML标记,OP询问哪些HTML5标记存在兼容性问题。
iConnor

哦耶。HTML5中推送了一大堆语义标记,以使您的页面更具机器可读性,并且可能对SEO友好(或可能不是)。有一些新的输入元素。我想其中一些可能在一个或多个浏览器中有问题。我认为犬可能会获得这些信息...
保罗

8

以通常的方式编写HTML 5,并使用Shims来确保与旧版浏览器的兼容性。您只需要非常小心地使用Javascript API,因为这些Java API很难被填充。如果您试图坚持基线HTML 4的兼容性,那么使用HTML 5毫无意义。


7
我很乐意用它<!DOCTYPE html>作为顶线,而不是以前曾出现在我们身上的那些被诅咒的长期丑陋的事情。
保罗

如果那是您的HTML 4和“ HTML 5”文档之间唯一改变的地方,那有什么意义?:)
deceze



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.