我偶然发现了这个项目:https://github.com/termi/ES5-DOM-SHIM,它在包括旧IE在内的所有浏览器中提供了几乎完整的ES5支持。
我一直在纯JS项目中使用它,但现在我有在项目中使用jquery / mootools / prototype(使用High Charts)。
即使只包含jquery脚本也会导致IE8中出现错误以及此填充程序。我怎样才能保持两全其美?
我的文档头像这样:
<!--[if lte IE 8]>
<script src="/js/a.ie8.js"></script>
<![endif]-->
<script src="/js/a.js"></script>
<script src="/js/jquery.1.8.2.js"></script>
<script src="/js/main.js"></script>
答案 0 :(得分:1)
确保使用正确的html结构,例如:
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<!--[if lte IE 8]>
<script src="a.ie8.js"></script>
<![endif]-->
<script src="a.js"></script>
<script src="jquery.1.8.2.js"></script>
<script src="main.js"></script>
</head>
<body>
</body>
当我测试你的结构(没有doctype)时,我在IE中也遇到了错误。
答案 1 :(得分:1)
这是一个迟到的答案,可能并不能解决您的主要问题。所以冒着被投票的风险......
从Github项目我可以看出,ES5-DOM-SHIM不仅提供了ES5功能的垫片,而且还试图填充IE上没有的DOM功能。如果您希望直接使用DOM API编程,这非常有用。
jQuery还提供了一个兼容性层,它可以进行功能检查以填补实现空白(如果您的代码只使用jQuery,则不需要DOM polyfill)。
混合两者似乎不是一个好主意,因为:
如果您只想使用JavaScript polyfills,请尝试使用https://github.com/kriskowal/es5-shim(注意ES5-DOM-SHIM基于它)
答案 2 :(得分:0)
首先,请务必在HTML文档中添加doctype:
<!DOCTYPE html>
它必须位于HTML文件的第一行。这使得旧的IE能够在符合标准的模式下工作并避免一些怪癖。
另一方面,ES5-DOM-SHIM似乎尝试做太多,你现在想要使用jQuery,它已经提供了处理跨浏览器的DOM不一致的方法。
我建议您只使用jQuery,如果需要支持新的HTML5元素和/或自定义元素,请使用HTML5shiv(在IE上添加HTML5元素支持的事实方法)。如果您确实需要ES5 / 6垫片,请使用社区提供更广泛支持的库,例如es5-shim和es6-shim。