事件.returnValue已被弃用,请使用标准的event.preventDefault()代替。

224

我有这个脚本:

<script>
$(document).ready(function () {
    $("#changeResumeStatus").click(function () {
        $.get("{% url 'main:changeResumeStatus' %}", function (data) {
            if (data['message'] == 'hidden') {
                $("#resumeStatus").text("скрыто");
            } else {
                $("#resumeStatus").text("опубликовано");
            }
        }, "json");
    });
});
</script>

我在谷歌浏览器控制台中收到以下错误:

event.returnValue已弃用,请使用标准的event.preventDefault()。

我正在使用jQuery v1.10.2,而#changeResumeStatus是一个<span>元素。

我的代码有什么问题呢?


19
我认为这不是一个错误,仅仅是一个警告 - 可以安全地忽略它。 - Qantas 94 Heavy
32
这是针对最新版 Chrome 更新发布的警告,请放心。 - A. Wolff
2
你应该研究一下如何转义非ASCII字符串。 - Gleno
@Gleno 为什么要这样做?我的模板在 utf-8 下完全正常。 - Alex Parakhnevich
4
@AlexParakhnevich 没有单一的强烈理由这样做,但有一些小理由会不时地出现。说实话,我的反应是本能而不是深思熟虑的。在我正在工作的项目中,有一个指南,要求不要在文字字面量中使用非 ASCII 字符,因为某些外部工具(如 TypeScript 编译器)无法处理这类输入。大多数情况下它表现良好,但有时当事情出了问题时,会耗费开发人员很多时间。无论如何,.empty().append("text") 最好改写成 .text("text") - Gleno
1
@Gleno 谢谢分享 - Alex Parakhnevich
7个回答

204

12
如果这意味着导致所有使用 JQuery < 1.11 的页面崩溃,我怀疑任何人都不会很快打破这一点。 - Backpackcoder
26
这个警告也会出现在jQuery 2.0.3(截至评论时最新稳定版本),当前里程碑版本是2.1,用于修复此问题。 - counterbeing
使用jQuery 1.11会修复问题吗? - Krunal
只是为了澄清一下... jQuery 并没有废弃在单击处理程序中使用 return false 吗?这是 Chrome 抱怨在 jQuery 库中发现的一小段代码吗? - mpen
2
确实。Chrome已经弃用了event.returnValue,这个属性只是为了向后兼容IE而存在的。 - Paul Mougel
显示剩余4条评论

23

仅供他人参考,我刚刚收到这个并发现它是由于AngularJS造成的。这是为了向后兼容性:

if (!event.preventDefault) {
    event.preventDefault = function() {
        event.returnValue = false; //ie
    };
}

4
我在一个基础站点中遇到了错误,没有使用或引用Angular - 可能是间接引用,但我不太确定。 - B. Clay Shannon-B. Crow Raven
1
@B.ClayShannon:这不是一个错误,而是一个警告。在我们的上下文中,这有很大的区别。你可以安全地忽略它。 - f.ardelian
1
如果您包含它,Chrome将完全解析它,就像它是您提供的脚本一样,并(正确地)抛出警告。 - iCodeSometime

20

如果您正在使用Bootstrap

当前版本的Bootstrap(3.0.2)(带有jQuery 1.10.2和Chrome)似乎也会生成此警告。

(Twitter也是如此,顺便说一句。)

更新

Bootstrap的当前版本(3.1.0)似乎不再生成此警告。


19

这是你的jQueryAPI问题,而不是你的脚本问题。没有太多需要担心的。


6

这是一则警告,大多数 JavaScript 框架(jQuery、Angular、YUI、Bootstrap 等)为老旧的并备受诟病的 Internet Explorer 提供向后兼容支持,从 IE8 到 IE6 :/

有一天,向后兼容性支持将被取消(对于 IE8/7/6,因为IE9 已经解决了这个问题),那时你就不会再看到这个警告(和其他 IE 问题)了。

这只是时间问题(现在 IE8 在全球占有率达到了10%,一旦它达到1%,它就死了),同时,请忽略此警告并保持冷静 :)


jQuery 2.x.x 只支持 IE9 及以上版本。如果您想在 jQuery 中获得 IE8 支持,则需要使用版本 1.x.x。 - Pete

3

3

我在许多网站上看到了这个警告。同时,我还看到YUI 3库也给出了相同的警告。这是由库(无论是jQuery还是YUI)生成的警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接