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


222

我有这个脚本:

<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>

我的脚本怎么了?


19
我认为这不是错误,而只是警告-可以安全地忽略此警告。
澳洲航空94重型

32
此警告以下最新的Chrome更新频率,不用担心
A.沃尔夫

2
您应该研究转义非ASCII字符串。
2013年

4
@AlexParakhnevich没有唯一令人信服的理由这样做,但是有一些次要的理由会不时地出现。老实说,我的反应是本能的,而不是经过深思熟虑的。在我现在正在研究的项目中,有一个指导原则是不要在文字中使用非ascii字符,这是我过去制定的,因为某些外部工具(打字稿编译器)被此类输入所阻塞。在大多数情况下,它运行良好,但有时在出现问题时会占用大量开发人员时间。无论如何,.empty().append("text")最好用表示.text("text")
Gleno

1
@Gleno感谢您的分享
Alex Parakhnevich 2013年

Answers:


204

这只是一个警告:您的代码仍然可以使用,但由于该方法已弃用,将来可能无法使用。请参阅Chromium相关来源相应的补丁程序

这已经在jQuery 1.11中得到了识别和修复(请参阅此处此处)。


12
我怀疑这是否会导致使用JQuery <1.11的所有页面都中断,任何人都将很快中断它。
Backpackcoder13年

26
此警告也出现在jQuery 2.0.3(此评论中为最新稳定版本)中,并且此修复程序的当前里程碑设置为2.1。
2013年

使用jQuery 1.11是否可以解决问题?
Krunal 2014年

只是为了澄清... jQuery一直没有使用过时return false在点击处理程序?这是Chrome抱怨在jQuery库中找到的一小段代码吗?
mpen 2014年

2
确实。Chrome浏览器已经过时event.returnValue,只有存在了向后兼容IE
保罗Mougel

22

仅供参考,我刚收到此文件,发现它是由于AngularJS引起的。这是为了向后兼容:

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

4
我在没有使用或引用角度的裸露骨头的地方遇到错误-可能是间接引用的,但我对此表示怀疑。
B. Clay Shannon

1
@ B.ClayShannon:这不是错误,是警告。有很大的不同,尤其是在我们的上下文中。您可以放心地忽略它。
f.ardelian 2013年

1
@ B.ClayShannon如果完全包含它,Chrome将对其进行完全相同的解析(就像它是您提供的脚本一样),并(正确)发出警告。
iCodeSometime 2014年

20

如果您使用Bootstrap

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

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

更新资料

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



6

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

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

这是一个时间问题(现在IE8在全球范围内占有10%的份额,一旦达到1%则是DEAD),同时,请忽略警告并保持禅宗:)


jQuery 2.xx仅支持IE9及更高版本。如果要在jQuery中支持IE8,则需要使用1.xx版
Pete


3

我在许多网站上看到了这个警告。另外,我看到YUI 3库也发出了同样的警告。这是从库生成的警告(无论是jQuery还是YUI)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.