event.returnValue không được dùng nữa. Vui lòng sử dụng tiêu chuẩn event.preventDefault ()


222

Tôi có kịch bản này:

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

Tôi nhận được lỗi sau trong bảng điều khiển Google Chrome của mình:

event.returnValue không được dùng nữa. Vui lòng sử dụng tiêu chuẩn event.preventDefault ().

Tôi đang sử dụng jQuery v1.10.2 và #changeResumeStatuslà một <span>.

Có gì sai với kịch bản của tôi?


19
Tôi nghĩ đó không phải là một lỗi, mà chỉ là một cảnh báo - điều này có thể được bỏ qua một cách an toàn.
Qantas 94 Nặng

32
Cảnh báo này đang theo sau bản cập nhật chrome mới nhất, đừng lo lắng
A. Wolff

2
Bạn nên xem xét thoát khỏi chuỗi không ascii.
Gleno

4
@AlexParakhnevich Không có lý do thuyết phục nào để làm như vậy, nhưng một vài lý do nhỏ thỉnh thoảng xuất hiện. Phản ứng của tôi là bản năng hơn là suy nghĩ tốt, thành thật mà nói. Trong các dự án tôi đang làm việc ngay bây giờ, có một hướng dẫn là không sử dụng các ký tự không phải là ascii trong văn học, mà tôi đã tạo ra trong quá khứ, bởi vì một số công cụ bên ngoài (trình biên dịch bản thảo) bị nghẹt vào đầu vào như vậy. Nó hoạt động đủ tốt trong hầu hết các trường hợp, nhưng đôi khi ngốn rất nhiều thời gian của nhà phát triển khi có sự cố. Dù sao, .empty().append("text")được thể hiện tốt hơn như .text("text").
Gleno

1
@Gleno cảm ơn vì đã chia sẻ
Alex Parakhnevich

Câu trả lời:


204

Đây chỉ là một cảnh báo: mã của bạn vẫn hoạt động, nhưng có thể sẽ không hoạt động trong tương lai vì phương thức này không được dùng nữa. Xem nguồn Chromium có liên quanbản vá tương ứng .

Điều này đã được nhận ra và sửa trong jQuery 1.11 (xem tại đâyđây ).


12
Tôi nghi ngờ điều này bất cứ ai cũng sẽ phá vỡ điều này bất cứ lúc nào sớm nếu điều đó có nghĩa là khiến tất cả các trang sử dụng JQuery <1.11 bị hỏng.
Ba lô

26
Cảnh báo này cũng xuất hiện với jQuery 2.0.3 (ổn định gần đây nhất theo nhận xét này) và cột mốc hiện tại được đặt thành 2.1, để khắc phục.
phản đối

Việc sử dụng jQuery 1.11 có khắc phục được sự cố không?
Krunal

Chỉ cần làm rõ ... jQueryđã không được sử dụng return falsetrong trình xử lý nhấp chuột của bạn? Đây là Chrome phàn nàn về một đoạn mã được tìm thấy trong thư viện jQuery?
mở

2
Thật. Chrome không dùng nữa event.returnValuemà chỉ tồn tại để tương thích ngược với IE
Paul Mougel

22

Chỉ để tham khảo, tôi mới nhận được và thấy rằng đó là do AngularJS . Đó là khả năng tương thích ngược:

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

4
Tôi đang gặp lỗi trong một trang web xương trần không có góc được sử dụng hoặc tham chiếu - có thể được tham chiếu gián tiếp, nhưng tôi nghi ngờ điều đó.
B. Clay Shannon

1
@ B.ClayShannon: Đây không phải là lỗi, đó là một cảnh báo. Có một sự khác biệt lớn, đặc biệt là trong bối cảnh của chúng tôi. Bạn có thể yên tâm bỏ qua nó.
f.ardelian

1
@ B.ClayShannon Nếu bạn bao gồm tất cả, Chrome sẽ phân tích chính xác giống như đó là tập lệnh bạn cung cấp và (chính xác) đưa ra cảnh báo.
iCodeSometime

20

Nếu bạn sử dụng Bootstrap :

Phiên bản hiện tại của Bootstrap (3.0.2) (với jQuery 1.10.2 & Chrome) dường như cũng tạo ra cảnh báo này.

(Nó cũng làm như vậy trên Twitter, BTW.)

Cập nhật

Phiên bản hiện tại của Bootstrap (3.1.0) dường như không còn tạo ra cảnh báo này.


19

Đó là vấn đề API jQuery của bạn , không phải tập lệnh của bạn. Không có nhiều điều phải lo lắng.


6

Đây là một cảnh báo liên quan đến thực tế là hầu hết các khung JavaScript (jQuery, Angular, YUI, Bootstrap ...) đều cung cấp hỗ trợ ngược cho Internet Explorer cũ bị ghét nhất từ ​​IE8 xuống IE6: /

Một ngày nào đó hỗ trợ tương thích ngược sẽ bị loại bỏ (đối với IE8 / 7/6 kể từ khi IE9 xử lý ) và bạn sẽ không còn thấy cảnh báo này (và các lỗi IEish khác) ..

Đó là một câu hỏi về thời gian (hiện IE8 có 10% thị phần trên toàn thế giới , một khi nó đạt 1% thì đó là DEAD ), trong khi đó, hãy bỏ qua cảnh báo và giữ nguyên zen :)


jQuery 2.xx chỉ hỗ trợ IE9 trở lên. Nếu bạn muốn hỗ trợ IE8 trong jQuery, bạn cần sử dụng phiên bản 1.xx
Pete


3

Tôi thấy cảnh báo này trên nhiều trang web. Ngoài ra, tôi thấy rằng thư viện YUI 3 cũng đưa ra cảnh báo tương tự. Đó là một cảnh báo được tạo từ thư viện (cho dù đó là jQuery hay YUI).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.