我正在开发一款用于电脑使用的网页应用程序。有哪些HTML5标签需要避免使用以防止与诸如IE8及以上的浏览器兼容性问题?
注意: 大多数关于此主题的问题都是1-3年前提出的。
我正在开发一款用于电脑使用的网页应用程序。有哪些HTML5标签需要避免使用以防止与诸如IE8及以上的浏览器兼容性问题?
注意: 大多数关于此主题的问题都是1-3年前提出的。
你问了哪些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>
Internet Explorer 8及以下版本不支持此功能,但可以通过以下方法进行修复。
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>
标签。
> IE8 对 <embed>
标签有部分支持。
你也应该了解这个标签。
<meta http-equiv="X-UA-Compatible" content="IE=edge">
这个meta
标签告诉Internet Explorer以最高IE模式显示页面,而不是进入兼容模式并将页面呈现为IE7或8所做的那样。关于更多信息,请在此处查看。
要快速入门,您可以查看HTML5 BoilerPlate
要了解浏览器兼容性支持表格,您可以查看 - http://caniuse.com/
HTML5 Shiv - https://github.com/afarkas/html5shiv
HTML5补丁列表 - https://github.com/Modernizr/Modernizr/wiki/...
更新
如评论所述
请注意元标记X-UA-Compatible。如果使用像html5 boilerplate这样的东西,它会在元素周围放置条件性注释(我IRC也是使用HTML5 doctype),即使带有标签,您也可能会遇到IE9强制自身进入IE7标准模式的问题。 IE再次出现问题
您可能需要研究一下这个问题,我目前没有任何支持。
<html>
元素有条件注释(这也发生在 html5 doctype 中,如果我没记错的话),则可能会遇到问题,即使有标签,IE9 仍会强制将自己置于 IE7 标准模式中。IE 又来捣乱了。 - cheezone一般来说,会存在问题。
我被告知你的问题是关于HTML 5标签,但也有必要考虑一下在任何你可能找到或编写的Javascript方面的新功能。
实际上,推荐的方法是测试功能是否存在,而不是特定的浏览器。 Modernizr脚本可能在这方面有所帮助,但也有无法检测到的HTML5功能的报道。
某些功能(如本地存储)可以追溯到IE8。
而其他功能(如FileReader)则需要 IE10/Firefox21/Chrome27 等版本。
如需最新信息,请尝试访问http://caniuse.com
像平常一样编写HTML 5,并使用Shims确保与旧版浏览器的兼容性。你只需要注意JavaScript API,因为这些几乎无法进行填充。如果您尝试为了兼容性而坚持使用基本的HTML 4,那么使用HTML 5就没有意义。
<!DOCTYPE html>
而不是以前那些长得丑陋而又麻烦的东西。 - Paul