event.returnValue sudah tidak digunakan lagi. Silakan gunakan event.preventDefault () standar sebagai gantinya

222

Saya punya skrip ini:

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

Saya menerima kesalahan berikut di konsol Google Chrome saya:

event.returnValue sudah tidak digunakan lagi. Silakan gunakan event.preventDefault () standar sebagai gantinya.

Saya menggunakan jQuery v1.10.2 dan #changeResumeStatusmerupakan a <span>.

Apa yang salah dengan skrip saya?

Alex Parakhnevich
sumber
19
Saya pikir itu bukan kesalahan, tetapi hanya peringatan - ini bisa diabaikan dengan aman.
Qantas 94 Heavy
32
Peringatan ini mengikuti pembaruan chrome terbaru, jangan khawatir
A. Wolff
2
Anda harus mencari jalan keluar dari string non-ascii.
Gleno
4
@AlexParakhnevich Tidak ada satu alasan kuat untuk melakukannya, tetapi beberapa alasan kecil yang merayap naik dari waktu ke waktu. Reaksi saya bersifat naluriah dan tidak dipikirkan dengan baik, jujur. Dalam proyek yang saya kerjakan saat ini, ada pedoman untuk tidak menggunakan karakter non-ascii dalam literal, yang saya letakkan di masa lalu, karena beberapa alat eksternal (kompiler naskah) tersedak input tersebut. Ini bekerja cukup baik dalam banyak kasus, tetapi kadang-kadang memakan banyak waktu pengembang ketika ada yang salah. Lagi pula, .empty().append("text")lebih baik dinyatakan sebagai .text("text").
Gleno
1
@Gleno terima kasih telah berbagi
Alex Parakhnevich

Jawaban:

204

Ini hanya peringatan: kode Anda masih berfungsi, tetapi mungkin tidak akan berfungsi di masa mendatang karena metode ini sudah tidak digunakan lagi. Lihat sumber Chromium yang relevan dan tambalan yang sesuai .

Ini sudah dikenali dan diperbaiki di jQuery 1.11 (lihat di sini dan di sini ).

Paul Mougel
sumber
12
Saya ragu ini siapa pun akan memecahkan ini dalam waktu dekat jika itu berarti menyebabkan semua halaman menggunakan JQuery <1,11 untuk rusak.
Backpackcoder
26
Peringatan ini juga muncul dengan jQuery 2.0.3 (stable terbaru dari komentar ini), dan tonggak sejarah saat ini diatur ke 2.1, untuk perbaikan.
balasan
Apakah menggunakan jQuery 1.11 akan memperbaiki masalah ini?
Krunal
Hanya untuk memperjelas ... jQuerytelah tidak usang menggunakan return falsedi penangan klik Anda? Apakah ini Chrome yang mengeluhkan potongan kode yang ditemukan di dalam perpustakaan jQuery?
mpen
2
Memang. Chrome telah usang event.returnValueyang hanya ada untuk kompatibilitas dengan IE
Paul Mougel
22

Hanya untuk referensi orang lain, saya baru saja menerima ini dan menemukan itu karena AngularJS . Ini untuk kompatibilitas mundur:

if (!event.preventDefault) {
    event.preventDefault = function() {
        event.returnValue = false; //ie
    };
}
Ledivin
sumber
4
Saya mendapatkan kesalahan di situs tulang kosong tanpa sudut yang digunakan atau direferensikan - mungkin secara tidak langsung direferensikan, tapi saya ragu.
B. Clay Shannon
1
@ B.ClayShannon: Ini bukan kesalahan, ini peringatan. Ada perbedaan besar, terutama dalam konteks kita. Anda dapat dengan aman mengabaikannya.
f.ardelian
1
@ B.ClayShannon Jika Anda memasukkannya sama sekali, Chrome akan menguraikannya persis sama seperti jika itu adalah skrip yang Anda berikan, dan (dengan benar) memberikan peringatan.
iCodeSometime
20

Jika Anda menggunakan Bootstrap :

Versi Bootstrap (3.0.2) saat ini (dengan jQuery 1.10.2 & Chrome) juga menghasilkan peringatan ini.

(Ia melakukannya di Twitter juga, BTW.)

Memperbarui

Versi Bootstrap saat ini (3.1.0) tampaknya tidak lagi menghasilkan peringatan ini.

panji
sumber
19

Itu masalah API jQuery Anda , bukan skrip Anda. Tidak banyak yang perlu dikhawatirkan.

Victor Zhang
sumber
6

Ini adalah peringatan yang terkait dengan fakta bahwa sebagian besar kerangka kerja JavaScript (jQuery, Angular, YUI, Bootstrap ...) menawarkan dukungan ke belakang untuk Internet Explorer yang paling dibenci, mulai dari IE8 hingga IE6: /

Suatu hari, dukungan kompatibilitas mundur akan dibatalkan (untuk IE8 / 7/6 sejak IE9 berurusan dengannya 7/6 ), dan Anda tidak akan lagi melihat peringatan ini (dan bug IEish lainnya) ..

Ini masalah waktu (sekarang IE8 memiliki 10% saham di seluruh dunia , setelah mencapai 1% itu MATI ), sementara itu, abaikan saja peringatan dan tetap zen :)

numediaweb
sumber
jQuery 2.xx hanya mendukung IE9 dan lebih tinggi. Jika Anda ingin dukungan IE8 di jQuery, Anda perlu menggunakan versi 1.xx
Pete
3

Saya melihat peringatan ini di banyak situs web. Juga, saya melihat bahwa perpustakaan YUI 3 juga memberikan peringatan yang sama. Ini peringatan yang dihasilkan dari perpustakaan (apakah itu jQuery atau YUI).

eAbi
sumber