event.returnValue 已弃用。请改用标准 event.preventDefault()

IT技术 javascript jquery ajax
2021-02-10 00:29:38

我有这个脚本:

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

我在 Google Chrome 控制台中收到以下错误:

event.returnValue 已弃用。请改用标准 event.preventDefault()。

我正在使用 jQuery v1.10.2 并且#changeResumeStatus是一个<span>.

我的脚本有什么问题?

6个回答

这只是一个警告:您的代码仍然有效,但由于该方法已被弃用,因此将来可能无法使用。查看Chromium相关源码相应的补丁

这已在 jQuery 1.11 中得到识别和修复(参见此处此处)。

只是为了澄清...jQuery一直没有使用过时return false在点击处理程序?这是Chrome抱怨在 jQuery 库中找到的一段代码吗?
2021-03-15 00:29:38
此警告也出现在 jQuery 2.0.3(截至本评论的最新稳定版本)中,当前里程碑设置为 2.1,以进行修复。
2021-03-19 00:29:38
如果这意味着导致所有使用 JQuery < 1.11 的页面中断,我怀疑任何人都会很快破坏它。
2021-03-20 00:29:38
使用 jQuery 1.11 会解决这个问题吗?
2021-03-27 00:29:38
的确。Chrome 已弃用event.returnValue,它的存在只是为了与 IE 向后兼容
2021-03-30 00:29:38

仅供其他人参考,我刚收到这个,发现这是由于AngularJS这是为了向后兼容:

if (!event.preventDefault) {
    event.preventDefault = function() {
        event.returnValue = false; //ie
    };
}
我在一个没有使用或引用角度的裸机站点中遇到错误 - 可能间接引用,但我对此表示怀疑。
2021-03-18 00:29:38
@B.ClayShannon 如果您完全包含它,Chrome 会将其解析为与您提供的脚本完全相同,并(正确)抛出警告。
2021-03-20 00:29:38
@B.ClayShannon:这不是错误,而是警告。有很大的不同,尤其是在我们的背景下。您可以放心地忽略它。
2021-03-21 00:29:38

如果您使用Bootstrap

当前版本的 Bootstrap (3.0.2)(带有 jQ​​uery 1.10.2 和 Chrome)似乎也会产生这个警告。

(它也在 Twitter 上这样做,顺便说一句。)

更新

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

那是您的jQuery API问题,而不是您的脚本。没有什么可担心的。

这是一个警告,与大多数 JavaScript 框架(jQuery、Angular、YUI、Bootstrap...)都提供对从 IE8 到 IE6 的旧式讨厌的 Internet Explorer 的向后支持这一事实相关:/

有一天,向后兼容性支持将被删除(对于 IE8/7/6,因为IE9 处理它),并且您将不会再看到此警告(以及其他 IEish 错误)。

这是一个时间问题(现在IE8 在全球拥有 10% 的份额,一旦达到1% 就死了),与此同时,忽略警告并保持禅意:)

jQuery 2.xx 仅支持 IE9 及更高版本。如果你想在 jQuery 中支持 IE8,你需要使用 1.xx 版
2021-04-01 00:29:38