7

我有以下示例 html 文件:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Example</title>
    <script src="../Scripts/jquery-2.0.3.js"></script>
    <!--<script src="../Scripts/jquery-1.7.js"></script>-->
    <script type="text/javascript">
        $(document).ready(function () {
            $('#mainheader').css("color", "red");
        });
    </script>
</head>
<body>
    <h1 id="mainheader" class="header">Sample 1</h1>
    <h2 class="header info">Sample 2</h2>
    <h3 class="info">Sample 3</h3>
</body>
</html>

当我使用 jQuery 版本 2.0.3 运行相同时,它会遇到错误:

/Scripts/jquery-2.0.3.js 中第 834 行第 4 列的未处理异常

0x800a01b6 - Microsoft JScript 运行时错误:对象不支持此属性或方法

在这一行: // 使用方便的事件回调 document.addEventListener("DOMContentLoaded", completed, false );

但是,如果我使用它的较低版本(即 1.7)运行,它可以正常工作......

然而,上面的代码在 Chrome 上的两个版本都可以正常工作。

你能帮我解决这些差异吗:

感谢和问候。

4

6 回答 6

11

目前 jQuery 2.x “不支持 Internet Explorer 6、7 或 8”

来自http://api.jquery.com/jQuery.browser/

于 2013-09-13T06:31:52.000 回答
5

由于没有人提到它(并且在评论中提到了它),这是解决这个问题的另一种可能的方法。这实际上是我建议您推出兼容性故障保护的方式,以及我在项目中执行它的方式。

正如许多人已经提到的,jQuery 2.x 放弃了对 IE8 及以下版本的支持(许多重大变化甚至源于 1.9)。下降的原因是更小的整体文件大小和更快的性能的目标。

话虽如此,应用程序的理想目标是将 jQuery 2.x 用于受支持的浏览器,同时为不支持的浏览器提供兼容性。

所以我建议只使用 jQuery 2.x 文件(如果你正在考虑你的应用程序的未来,这就是你应该使用的文件)。这里不需要太多;只需像以前一样添加您的jQuery。

<!-- according to h5bp -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-2.0.3.min.js"><\/script>')</script>

然后,为了确保与旧 IE 版本的兼容性,您可以有条件地包含补丁文件,以便在必要时对其进行处理。

<!--[if lte IE 8]>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<![endif]-->

这可确保您为受支持的浏览器提供更快、更精简的 jQuery,并其他浏览器提供可用的 jQuery,其代价是在您需要补丁时需要额外的 HTTP 调用(以及可能更大的总带宽负载)。

于 2013-09-13T09:07:07.767 回答
2

从网站

jQuery 2.x 具有与 jQuery 1.x 相同的 API,但不支持 Internet Explorer 6、7 或 8。

如果您需要兼容旧的 IE 浏览器(或兼容模式下的最新浏览器),请使用 1.x 版本。2.x 版本是一个分支,它删除了许多仅用于与那些旧浏览器兼容的东西。

于 2013-09-13T06:31:45.630 回答
2

那是因为 2.0.3 版本不支持 IE8 而 1.7 支持

于 2013-09-13T06:31:54.790 回答
2

jQuery 2+ 版本不支持 IE < 9,如果您打算支持这些浏览器,请坚持使用最新的 1.x 分支版本 - 现在是 1.10.2

于 2013-09-13T06:31:59.260 回答
0

对于 IE 11,您的 HTML 页面中必须包含以下内容

<!DOCTYPE html>
    <html>
    <head>
           <meta http-equiv="X-UA-Compatible" content="IE=edge;" />

如果你有旧的 html 4.01 doctype 标签,它就不起作用。

于 2017-01-11T18:00:57.017 回答