Javascript 如何正确使用HTML5。。。如何在IE9、Firefox和Safari上工作? 问题:

Javascript 如何正确使用HTML5。。。如何在IE9、Firefox和Safari上工作? 问题:,javascript,html,twitter-bootstrap,internet-explorer,html5shiv,Javascript,Html,Twitter Bootstrap,Internet Explorer,Html5shiv,当使用的条件注释[如果lt IE 9]用于IE8及以下版本,并且使用Safari 4.x和Firefox 3.x读取IE时,html5shiv如何在IE9上工作 有条件的评论?如果不是的话,html5shiv怎么可能在这些浏览器上使用他们的浏览器中建议的条件注释呢? 有人问,是否可以在没有条件注释的情况下在每个浏览器中使用它,以及会有什么副作用,但这不是我的问题。这个问题是4年前提出的。HTML5现在是标准的,微软不再提供对传统浏览器的支持,所以在每个浏览器中加载它在这一点上是疯狂的,我不会考

当使用的条件注释
[如果lt IE 9]
用于IE8及以下版本,并且使用Safari 4.x和Firefox 3.x读取IE时,html5shiv如何在IE9上工作 有条件的评论?如果不是的话,html5shiv怎么可能在这些浏览器上使用他们的浏览器中建议的条件注释呢?


有人问,是否可以在没有条件注释的情况下在每个浏览器中使用它,以及会有什么副作用,但这不是我的问题。这个问题是4年前提出的。HTML5现在是标准的,微软不再提供对传统浏览器的支持,所以在每个浏览器中加载它在这一点上是疯狂的,我不会考虑。我的问题与Github上的文档有关,html5shiv使用该文档提供了什么现成的东西,以及如何使用它来支持它声称支持的浏览器

引用Github上有关HTML5脚本的自述:

“它还为IE6-9、Safari 4.x和FF 3.x的HTML5元素应用基本样式设置。”

用法:


如果这是真的,这可能是许多人停止使用它的另一个原因,考虑到当你把它从等式中取出并包含在你的css(或css重置)中时,html5shiv实际上会对浏览器产生影响的浏览器的1.39%

shiv脚本只在IE中使用(在这种情况下,小于版本9)[…lt IE9…]),没有在其他浏览器中使用,被他们忽略。毕竟它被注释掉了

<!-- ... --> 

IE支持并读取它们。shiv脚本增强了功能,使那些旧浏览器工作得“更好”

更新: 据我所知,“lt IE9”似乎也在Safari 4.x和FF 3.x中运行(都是从GitHub项目描述中克隆的)

另一更新:
我相信这只适用于IE,而不是旧的Safari或FireFox。我会继续挖掘。如果我错了,其他人会纠正我。

我在几年前写了一个非常详细的页面。这是针对lte=less[or]equalsIE9的;我已经记录了许多示例,可以复制并粘贴到我写的页面上

<head>
<!--[if lte IE 9]>
<script src="bower_components/html5shiv/dist/html5shiv.js"></script>
<![endif]-->
</head>

我建议您的访问者从Vista升级,Vista是唯一可以运行IE9或更低版本且具有安全支持的Windows版本。从2016年1月起,每个版本的Windows只支持最新版本的Internet Explorer。有关在哪个版本的Windows上运行哪个版本的IE,请参阅



截至2010年1月,只有IE10+应该得到任何有意义的关注。正确的政策是整版阻止IE9或更低版本;如果微软不支持它,那么你也不应该这样做,除非你的工资至少是你在公司工作一年工资的两倍。站在你的立场上,开发者们,我们最终知道这将需要什么e来完成工作。

旁注:你应该只把这样的浏览器统计数据作为一个非常松散的指南。这些网站上的统计数据远非福音,而且会随着国家、市场、人口统计而变化。你应该看看自己网站的分析,看看其中有多少您的用户属于Safari 4、FireFox 3、Internet Explorer 6-8类别(我猜这将远远低于2.3%)

(还请记住,FireFox会自动更新自身,并且当前版本为43(!),Safari会自动用OSX更新,版本为9。人们仍然使用旧版本的可能性非常小。我查看了我的一个非常受欢迎的分析网站:在过去一个月的20000次会话中,只有1次使用FF3,1次使用IE7,1次使用IE8,没有一次使用Safari 4或IE6。)


但是,如果您热衷于针对这些异常值,以下是您问题的答案:

当使用的条件注释
[如果lt IE 9]
用于IE8及以下版本时,html5shiv如何在IE9上工作

HTML5shiv不与IE9配合使用,因为它不需要。Internet Explorer 9已正确支持几乎所有HTML5元素:

Safari 4.x和Firefox 3.x是否阅读IE有条件评论

Safari和FireFox不支持IE条件注释,但它们可以像这样作为目标:

FF3:

狩猎:

/* Safari only override */     
::i-block-chrome,.myClass {      color: lime;     }

<强>但这不是HTML5SHIV所做的,你是对的:在HTML5SHIV主页上呈现的条件语句在当前状态下将被FF3或Safari 4所拾取。CSS重置/规范化可能会包括这些浏览器所需的CSS

因此,要了解如何在上述所有浏览器中处理HTML5元素:

IE6-8:使用HTML5shiv.js,如他们的文档中所述

IE9-11:使用
main{display:block}
或将其添加到HTML中。(感谢LGSon。)

Safari 4:使用Normalize.css或以下css:

article, aside, details, figcaption, figure, main,
footer, header, hgroup, menu, nav, section {
    display: block;
}
FireFox 3:同上


(FireFox 4+和Safari 5+具有更强的HTML5支持,不需要上述CSS。)

回答我自己的问题

html5shiv的github文档有误导性……差不多就是这样。在做了进一步的挖掘之后,我发现了。 在Firefox3或Safari 4()中,没有任何“浏览器怪癖或黑客”导致阅读条件注释

[如果lt IE 9]
在IE 5-8中工作,那么它应该如何工作……不要被自述文件愚弄

因此,如果您正在使用下面的代码片段,希望它能神奇地在IE9、Safari 3或Firefox 4上运行,那么您就太不走运了

<!--[if lt IE 9]>
    <script src="bower_components/html5shiv/dist/html5shiv.js"></script>
<![endif]-->


那么HTML5应该如何使用呢? 正如我在问题中提到的以及其他人在回答中提到的,微软dro
/* FireFox 3 */
html>/**/body .selector, x:-moz-any-link, x:default { color: lime; }
/* Safari only override */     
::i-block-chrome,.myClass {      color: lime;     }
article, aside, details, figcaption, figure, main,
footer, header, hgroup, menu, nav, section {
    display: block;
}
<!--[if lt IE 9]>
    <script src="bower_components/html5shiv/dist/html5shiv.js"></script>
<![endif]-->
<script src="bower_components/html5shiv/dist/html5shiv.js"></script>
<!--[if !(IE 5)]>
       <script src="bower_components/html5shiv/dist/html5shiv.js"></script>
<![endif]-->
<!--[if (IE 8)|(IE 9)]>
       <script src="bower_components/html5shiv/dist/html5shiv.js"></script>
<![endif]-->
<style type="text/css">
    article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}
    mark{background:#FF0;color:#000}
</style>
<!--[if (gt IE 5)&(lt IE 9)]>
    <script type="text/javascript">window.html5={shivCSS:!1};</script>
    <script type="text/javascript" src="bower_components/html5shiv/dist/html5shiv.js"></script>
<![endif]-->
<!DOCTYPE html>
<html>
  <head>
    <!-- Meta, stylesheets, etc... -->
    <style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>
    <!--[if (gt IE 5)&(lt IE 9)]> <script>window.html5={shivCSS:!1};</script> <script src="https://cdn.jsdelivr.net/html5shiv/3.7.3/html5shiv.min.js"></script> <![endif]-->
</head>
<!--[if lte IE 9]><!-->
<link href="ie98765_and_non_ie.css" rel="stylesheet">
<!--<![endif]-->