51

Rails 初学者。

我在我的示例应用程序中编写 CSS。我知道有 Javascript 代码可以帮助浏览器,即 Internet Explorer,支持 HTML5。

HTML5 Shim 和 HTML5 Shiv 有什么区别?有什么值得知道的吗?

http://html5shim.googlecode.com/svn/trunk/html5.js

http://html5shiv.googlecode.com/svn/trunk/html5.js

我的代码,你们大家:

<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js">
</script>
<![endif]-->
4

4 回答 4

82

它最初被称为 html5-shiv。

Shiv 确实不是正确的术语,因为 shiv 是一种刺刀。

垫片是您用来平整事物(或支撑它们)的东西。如果一张桌子的一条腿太短,你可以用一块木头或电话簿把它垫起来……

所以 html5-shim 适合那些希望 html5shiv 被称为 shim 的人。

就差异而言,就是这样。

有点像polyfill涵盖了功能实现的差异。
在北美,Polyfill 可能被称为“Spackle”。

于 2013-01-20T20:54:33.150 回答
26

来自http://code.google.com/p/html5shim/

shiv 还是垫片?

常见问题: html5shim 和 html5shiv 有什么区别?
答:没有,一个有m,一个有av——就是这样。

于 2013-10-16T09:04:31.397 回答
14

答案是。

shiv 这个词起源于John Resig,他被认为使用这个词是因为它的俚语意思,一种用作刀状武器的锋利物体,用于 Internet Explorer。说实话,John 可能打算使用 shim这个词,它在计算中意味着应用程序兼容性解决方法。大多数熟悉 Internet Explorer 的开发人员并没有纠正他的拼写错误,而是对视觉图像表示赞赏。孩子们,这就是词源。

来自https://github.com/aFarkas/html5shiv的作者页面

于 2014-07-30T05:29:11.127 回答
0

这可能比您正在寻找的更简单,但对于其他可能感到困惑的人:

首先,这是一个 Shim 的非编程定义:

名词:用于对齐零件、使它们适合或减少磨损的垫圈或薄条材料。

动词:楔(某物)或用垫片填充(空间)。

要了解编程术语中的 shim,您需要了解 IE 对 Web 开发人员来说是什么/现在是什么痛苦:

IE 是最早的商用网络浏览器之一。它可能是第一个“免费”可用的。因此,它是在定义浏览器标准之前构建的,即定义如何处理 html 和 javascript。

因此,为了让网站和应用程序在 IE 中正常工作,随着标准的制定,IE 不能或(出于垄断原因)不会更新 IE(这里有一篇很棒的帖子,其中包含更多信息)。这导致 IE 和其他浏览器之间的裂痕随着时间的推移而增长。这种裂痕经常出现在意想不到的错误、样式差异上,并且一些应用程序直接拒绝了用户从其他浏览器运行它的选项。

但是,如果产品要同时适用于两种类型的浏览器,开发人员通常不得不编写两组代码。一个适用于几乎所有现代浏览器,一个适用于 IE。显然,这种做法让保养成为了一场噩梦。但是,随着时间的推移,许多 JavaScript 框架/库开始添加代码来专门解决这些问题。这些代码被称为垫片。因为他们让你的代码“适合”在 IE 中。

例如,当jQuery首次发布时,它相对于其前辈 - 或只是编写自己的库 - 的主要优势是它适用于每个浏览器,甚至 IE。当时 IE 仍然被大量使用,因此这为开发人员节省了大量时间。但是现在 jQuery 已经是第 3 版了。和以前版本的主要区别是它不再支持 IE。那是因为每个人,甚至微软都已经离开了 IE(Win10 的默认浏览器是 Edge)。但是,不幸的是,许多网站和 Web 应用程序是专门为 IE 设计的(出于安全原因)。尽管 IE 在大多数商业应用程序中已经走上了 Dodo 的道路,但它仍然提供其他浏览器没有的安全功能(但它们正在迅速追赶)。即使他们这样做了,更新这些应用程序的成本通常也太大而无法合理。

这基本上意味着很多人仍然被迫使用 IE,所以这些 shims 仍然是必要的。

于 2018-11-16T14:27:27.427 回答