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
คำเตือนนี้ติดตามการอัปเดตโครเมี่ยมครั้งล่าสุดไม่ต้องกังวล
A. Wolff

2
คุณควรดูที่การหลีกเลี่ยงสตริงที่ไม่ใช่ ASCII
Gleno

4
@AlexParakhnevich ไม่มีเหตุผลที่น่าสนใจในการทำเช่นนั้น แต่มีผู้เยาว์เล็กน้อยที่คืบหน้าเป็นครั้งคราว ปฏิกิริยาของฉันเป็นสัญชาตญาณมากกว่าที่จะคิดออกไปอย่างซื่อสัตย์ ในโครงการที่ฉันกำลังดำเนินการอยู่ในขณะนี้มีแนวทางที่จะไม่ใช้ตัวอักษรที่ไม่ใช่ ASCII เป็นตัวอักษรซึ่งฉันกำหนดไว้ในอดีตเพราะเครื่องมือภายนอกบางอย่าง (คอมไพเลอร์ตัวพิมพ์) ทำให้เกิดปัญหากับอินพุตดังกล่าว มันทำงานได้ดีพอในกรณีส่วนใหญ่ แต่บางครั้งกินมากนักพัฒนาเวลาเมื่อสิ่งผิดปกติ อย่างไรก็ตามมีการแสดงออกที่ดีกว่า.empty().append("text") .text("text")
Gleno

1
@Gleno ขอบคุณที่แบ่งปัน
Alex Parakhnevich

คำตอบ:


204

นี่เป็นเพียงคำเตือน: รหัสของคุณยังคงใช้งานได้ แต่อาจไม่สามารถใช้งานได้ในอนาคตเนื่องจากวิธีการนี้ไม่ได้รับการสนับสนุน ดูที่มาที่เกี่ยวข้องของ Chromiumและแพทช์ที่เกี่ยวข้อง

สิ่งนี้ได้รับการยอมรับและแก้ไขแล้วใน jQuery 1.11 (ดูที่นี่และที่นี่ )


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

22

เพียงสำหรับการอ้างอิงอื่น ๆ ของฉันเพิ่งได้รับนี้และพบว่ามันเป็นเพราะAngularJS มันมีไว้สำหรับความเข้ากันได้ย้อนหลัง:

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

4
ฉันได้รับข้อผิดพลาดในไซต์กระดูกเปลือยโดยไม่มีการใช้หรืออ้างอิงเชิงมุม - อาจอ้างอิงทางอ้อม แต่ฉันสงสัย
B. Clay Shannon

1
@ B.ClayShannon: มันไม่ใช่ข้อผิดพลาดมันเป็นคำเตือน มีความแตกต่างใหญ่โดยเฉพาะในบริบทของเรา คุณสามารถเพิกเฉยได้อย่างปลอดภัย
f.ardelian

1
@ B.ClayShannon หากคุณรวมไว้เลย Chrome จะแยกวิเคราะห์เหมือนกับว่าเป็นสคริปต์ที่คุณให้มาและ (ถูกต้อง) จะโยนคำเตือน
iCodeSometime

20

หากคุณใช้Bootstrap :

Bootstrap เวอร์ชันปัจจุบัน (3.0.2) (พร้อม jQuery 1.10.2 & Chrome) ดูเหมือนว่าจะสร้างคำเตือนนี้เช่นกัน

(ทำเช่นนั้นบน Twitter ด้วยเช่นกัน BTW)

ปรับปรุง

Bootstrapรุ่นปัจจุบัน(3.1.0) ดูเหมือนว่าจะไม่สร้างคำเตือนนี้อีกต่อไป



6

นี่เป็นคำเตือนที่เกี่ยวข้องกับความจริงที่ว่าเฟรมเวิร์ก JavaScript (jQuery, Angular, YUI, Bootstrap ... ) ส่วนใหญ่ให้การสนับสนุนย้อนหลังสำหรับ Internet Explorer ที่น่ารังเกียจและเก่าแก่ที่สุดเริ่มต้นจาก IE8 ลงไปที่ IE6: /

วันหนึ่งที่การรองรับความเข้ากันได้แบบย้อนหลังจะลดลง (สำหรับ IE8 / 7/6 เนื่องจากIE9 เกี่ยวข้องกับมัน ) และคุณจะไม่เห็นคำเตือนนี้อีก (และข้อผิดพลาด IEish อื่น ๆ ) ..

เป็นคำถามของเวลา (ตอนนี้IE8 มีส่วนแบ่งทั่วโลก 10%เมื่อถึง1% มันคือ DEAD ) ในขณะเดียวกันก็ไม่ต้องสนใจคำเตือนและยังคงเซน :)


jQuery 2.xx รองรับ IE9 ขึ้นไปเท่านั้น หากคุณต้องการการสนับสนุน IE8 ใน jQuery คุณต้องใช้เวอร์ชัน 1.xx
Pete


3

ฉันเห็นคำเตือนนี้ในหลายเว็บไซต์ นอกจากนี้ฉันเห็นว่าห้องสมุดYUI 3 ยังให้คำเตือนเหมือนกัน มันเป็นคำเตือนที่สร้างขึ้นจากห้องสมุด (ไม่ว่าจะเป็น jQuery หรือ YUI)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.