6

我正在升级我的网站,这涉及到决定使用新的 HTML5 语义元素<nav> <header> <footer> <aside> <section>而不是常规的旧<div>元素。

我确实计划支持 IE7 和 IE8,但我知道这些版本不支持上述语义元素。我已经阅读了诸如 Modernizr、Initializr 和 HTML5shiv 之类的“插件”,并且我知道如果启用了 JavaScript ,旧版浏览器将支持新元素,但如果不是,我该怎么办?

默认情况下,<html>标签的类为no-js,如果启用了 JavaScript,Modernizr/Initializr 会将此类替换为js. 这一切都很好,但有些事情我不确定。到目前为止,涵盖了什么?

已排序

  • 如果启用了 JavaScript,则 Modernizr/Initializr 支持 IE7 和 IE8。
  • 使用reset.css文件,其他较旧的浏览器支持这些新标签。
  • 现代浏览器都很好。

问题

  • 如果 JavaScript 被禁用,我应该如何处理 IE8 及以下版本?该类no-js已添加到<html>标签中,那么我该怎么办呢?
  • 我怎样才能<noscript>在这里发挥我的优势?我不想用编码使页面太大。

所以,除了这些问题,我还想问一下是否真的值得使用这些标签,什么时候我可以只使用好的 ol'<div>标签,它们既支持旧浏览器,又通过消除制作新浏览器所需的编码来减小文件大小标签在旧浏览器中工作?

谢谢你,迪伦。

4

5 回答 5

2

例如,最好同时使用两者

<nav>
    <div>
        <ul>
        <!-- etc -->
        </ul>
    </div>
</nav>

如果您需要支持那些过时的浏览器,我不会做更多的事情。这样的好处不值得付出额外的努力。

于 2013-11-02T16:26:02.850 回答
1

没有必要遵循新的语义。新语义主要是为搜索引擎开发的,而不是为网站功能开发的。如果你真的想支持 IE,就为 IE 做吧。

如果您真的考虑no-script案例并且 CSS 对您来说还不够,那么您所能做的就是 PHP/ASP 魔术。

我的一个朋友专门在 Flash 中工作,因为没有 js,完全是客户端,不关心浏览器......谁知道......

于 2013-11-02T16:31:53.533 回答
1

我确实计划支持 IE7 和 IE8,但我知道这些版本不支持上述语义元素。我已经阅读了诸如 Modernizr、Initializr 和 HTML5shiv 之类的“插件”,并且我知道如果启用了 JavaScript,旧版浏览器将支持新元素,但如果不是,我该怎么办?

如果未启用 JavaScript,则在显示新元素的内容时,CSS 将不会正确应用于它们。虽然理论上您可以使用noscript元素触发重定向到不使用新元素的页面版本(通过 中的meta刷新标记noscript),但您将维护网站的两个版本。

例如,给定此页面:Live Copy

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>HTML5 Elements</title>
  <style>
    nav {
      color: green;
    }
  </style>
</head>
<body>
  <nav><ul><li>This text should be green</li></ul></nav>
</body>
</html>

...早期版本的 IE 将以默认颜色显示文本。在元素之前添加 HTML5 shiv style

<script src="http://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.2/html5shiv.js"></script>

...如您所知,这需要 JavaScript,使文本变为绿色:Live Copy

于 2013-11-02T16:26:15.367 回答
0

我应该使用新的 HTML5 语义元素吗?

是的。

如果 JavaScript 被禁用,我应该如何处理 IE8 及以下版本?no-js 类被添加到标签中,那么我到底能用它做什么呢?

你可以做这样的事情,

HTML

  <div id='wrapper'>
     // Whole website coding here
    </div>
    <div id='old-browsers'>
      Use an upgraded browser
    </div>

CSS

    .no-js #wrapper {
      display: none;
    }

    #old-browsers {
     display: none;
    }

    .no-js #old-browsers {
      display:block;
    }

我怎样才能在这里发挥我的优势?我不想用编码使页面太大。

IE 考虑:

IE7 已经 7 岁了,现在大多数开发人员都不支持它。禁用 js 的 IE7 / IE8 用户非常少,您不应该针对这些异常进行开发。相反,您应该给他们一个使用上述方法升级的建议。您可以将noscript标签用于相同的用例。

于 2013-11-02T16:27:14.390 回答
-1

您可以做的(以及许多大型网站所做的)是在禁用 javascript 时显示通知(可选地,当浏览器是 IE7 或 IE8,但您需要服务器端检查),该网站不会显示它应该的方式。请参阅“如何检测 JavaScript 是否被禁用? ”了解如何执行此操作。

只有 5.3%(来源)的互联网用户使用 < 8 的 Internet Explorer,0.25% 到 2%(来源)的总用户禁用了 Javascript。您可以花费大量时间为最多 5% x 2% = 0.01% 的访问者制定平滑的解决方案,或者您可以花费 5 分钟构建我描述的通知系统。

于 2013-11-02T16:32:22.770 回答