所有现代浏览器都支持 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环境。