我最近开始使用 HTML 5 而不是 XHTML,我看到了很多好处。它更清洁、更简单、更易于使用。标签更好,元素更有意义,这只是一种更好,更简单的编码方式。
但是,IE 8 及以下版本不支持回退。要使其工作,您必须使用 HTML 5 JavScript shiv。除非用户关闭了 JavaScript,否则这非常有用。
在这里做一些非常粗略的计算,如果大约 13% 的用户使用 IE 8 及以下版本(截至 2012 年 11 月 14 日)并且 2% 的用户禁用了 JavaScript,那么 0.26% 的用户使用旧版浏览器JavaScript 已关闭。这将导致 HTML 5 网站中断。Progressive Enhancement 的负责人说,一个网站应该在禁用 JS 的情况下仍然可以工作,但是在这种情况下,该网站将根本无法工作——它会崩溃并变成乱码。
一个 noscript 标签,上面写着“请打开你的 JavaScript”。可以工作,但除非你可以让它非常明显,否则它可能不会在混乱的文本和内容中看到。
由于 head 中的 noscript 标记在 HTML 5 中有效,因此以下是解决此问题的正确方法吗?
<!DOCTYPE HTML>
<html>
<head>
<noscript>
<!--[if lte IE 8]>
<meta http-equiv="refresh" content="0"; ,URL=http://www.example.com/no-js">
<![endif]-->
<noscript>
</head>
总结上面的代码,代码检查用户是否禁用了 JavaScript,然后检查它是否是 IE 8 及以下版本,如果是,则重定向到另一个页面。
重定向页面可以用 XHTML 制作,并说明该网站是用 HTML 5 制作的,需要在旧浏览器中启用 JavaScript 才能正确运行。然后,一旦用户启用了他们的 JavaScript,你就可以在头脑中使用这样的东西:
<script>
window.history.back();
</script>
所以用户会自动被重新发送回上一页。
这是解决这个问题的正确方法吗?还是只对所有用户的 0.26% 值得?