所有现代浏览器都支持 HTML5。
此外,所有浏览器,不论新旧,都会自动把未识别元素当做行内元素来处理。
正因如此,您可以帮助老式浏览器处理”未知的” HTML 元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>html5shiv</title> <style> /*html5*/ article { font-size: 40px; color: red; } </style> <script> (function() { if (! /*@cc_on!@*/ //条件编译代码 0) return; var e = "abbr, article, aside, audio, canvas, datalist, details, dialog, eventsource, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, time, video".split(', '); console.log(e); var i = e.length; while (i--){ document.createElement(e[i]); }
})(); </script> </head> <body> <article> You are my sunshine. </article> </body> </html>
|
if (!/*@cc_on!@*/ 0) return;
IE鲜为人知的条件编译语句,如果是IE浏览器就会执行这句代码,其它浏览器不会执行。这里面的代码是一个!, 如果是IE浏览器,if里面就是判断!!0,为假,所以不return而执行下面的代码。如果是其它浏览器判断为真,直接return,不会执行后面的代码。
(function() { })();
立即执行函数,使代码都在这个函数的局部作用域下,不污染window环境。