7

我正在使用 jquery 2.0,但还想使用 jQuery 迁移插件,这样我的网站就可以在旧版浏览器上运行。但是,我没有成功地让它工作。我的 html 的标题部分中有以下内容。

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=8" />
    <script src="/Scripts/jquery-2.0.3.js"></script>
    <script src="/Scripts/jquery.unobtrusive-ajax.min.js"></script>
    <script src="/Scripts/jquery.validate.min.js"></script>
    <script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>

兼容性元标记是为了让我可以在我的计算机(具有 IE 11)上进行测试。我没有装有旧版 IE 的电脑。无论如何,这给了我 javascript 错误,例如:

0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法“addEventListener”

jQuery 迁移指南(https://github.com/jquery/jquery-migrate/)似乎只是说在包含 jQuery 之后包含迁移插件。我究竟做错了什么?

编辑

我发现我的本地 jquery.js 文件必须已损坏,或者我从中获取的 nuget 包的版本可能不正确。因为当我直接从 code.jquery.com 包含 jquery 时,该错误就消失了。

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=8" />
    <script src="http://code.jquery.com/jquery-2.1.0.js"></script>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>

但是,我的脚本出错了。这是一个示例脚本

function HighlightSelectedRow(tr) {
    $("#TableSummary tr").removeClass("HighlightedRow");
    tr.className += " HighlightedRow";
}

它给出了以下错误

0x800a138f - JavaScript runtime error: The value of the property '$' is null or undefined, not a Function object

谢谢

4

4 回答 4

6

可能你应该重新排序 js 堆栈:

<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<script src="/Scripts/jquery-2.0.3.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
</head>
于 2014-02-19T14:05:24.910 回答
3

更改包含 jquery 迁移脚本的顺序

于 2014-04-25T08:02:33.863 回答
2

不太可能是文件损坏,只是与 jQuery 2.x 和 IE 8 不兼容。 如果您需要 IE 8 兼容性,请使用 1.x 系列。

即使您运行的是 IE 10(我假设是更新的),这也适用。就我而言,我有几台 PC 带有 Tools / Compatibility view settings / Display Intranet sites in compatible view checked。因此,它在我本地 PC 上的 Visual Studio 中运行良好,但是当我“发布”到内部服务器以进行下一层测试时,SPLAT。一些 PC 崩溃并烧毁,而另一些则很好。

jQuery 下载站点给出了这个警告。

jQuery 2.x 与 jQuery 1.x 具有相同的 API,但不支持 Internet Explorer 6、7 或 8。... 由于 IE 6/7/8 仍然比较常见,我们建议使用 1.x 版本除非您确定没有 IE 6/7/8 用户正在访问该站点。

对于那些想要强制 IE 退出兼容模式的用户,

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

可以添加到您的母版页的最顶部。


编辑

此代码将为旧 IE 调用正确版本的 jQuery。它将在兼容模式下为 IE 8 和 10 加载 1.x。这可以与上面的 Meta 值结合添加或作为替代。

<!--[if lt IE 9]>
    <script src="http://code.jquery.com/jquery-1.11.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="http://code.jquery.com/jquery-2.1.0.js"></script>
<!--<![endif]-->
于 2014-04-22T21:58:48.357 回答
0

关闭 IE 上的兼容模式对我有用。

于 2015-07-08T15:51:32.687 回答