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>

Chrome 콘솔에 다음 오류가 표시됩니다.

event.returnValue는 더 이상 사용되지 않습니다. 대신 표준 event.preventDefault ()를 사용하십시오.

jQuery v1.10.2를 사용 #changeResumeStatus하고 <span>있습니다.

내 스크립트에 어떤 문제가 있습니까?


19
나는 이것이 오류가 아니라 단지 경고라고 생각합니다. 이것은 무시해도됩니다.
— 콴타스 94 헤비

32
이 경고는 최신 크롬 업데이트를 따르고 있습니다
— .

2
ASCII가 아닌 문자열을 이스케이프 처리해야합니다.
— Gleno

4
@AlexParakhnevich 그렇게하는 데에는 설득력있는 단 하나의 이유가 없지만 가끔씩 발생하는 몇 가지 사소한 이유가 있습니다. 나의 반응은 정직하게 생각하기보다는 본능적이었다. 현재 작업중 인 프로젝트에는 ASCII가 아닌 문자를 리터럴로 사용하지 않는 지침이 있습니다. 이는 이전에 설립 한 것입니다. 일부 외부 도구 (유형 스크립트 컴파일러)는 그러한 입력에 질식했습니다. 대부분의 경우 잘 작동하지만 문제가 발생하면 개발자 시간을 많이 소비합니다. 어쨌든로 .empty().append("text")표현하는 것이 좋습니다 .text("text").
— Gleno

1
공유 @Gleno 감사
— 알렉스 Parakhnevich

답변:


204

이것은 경고 일뿐입니다. 코드는 여전히 작동하지만 메소드가 사용되지 않아 향후에는 작동하지 않을 수 있습니다. Chromium 관련 소스 및 해당 패치를 참조하십시오 .

이것은 이미 jQuery 1.11에서 인식되고 수정되었습니다 ( here 및 here 참조 ).


12
JQuery <1.11을 사용하는 모든 페이지가 중단되는 것을 의미한다면 누구나이 문제를 곧 해결할 것이라고 의심합니다.
— Backpackcoder

26
이 경고는 jQuery 2.0.3 (이 주석에서 가장 최근의 안정)에서도 나타나며 현재 이정표는 2.1로 설정되어 있습니다.
— counterbeing

jQuery 1.11을 사용하면 문제가 해결됩니까?
— Krunal

그냥 명확히하기 위해 ... jQuery한 하지 사용되지 않는 return false사용자의 클릭 핸들러에서? 이것은 jQuery 라이브러리에서 발견 된 코드 스 니펫에 대해 불평하는 Chrome 입니까?
— mpen

2
과연. Chrome은 더 이상 사용되지 않으며 event.returnValueIE와의 하위 호환성을 위해 존재했습니다
— 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 (3.0.2) (jQuery 1.10.2 및 Chrome 포함) 도이 경고를 생성하는 것으로 보입니다.

(BTW 트위터에서도 마찬가지입니다.)

최신 정보

현재 버전의 부트 스트랩 (3.1.0)이 더 이상이 경고를 생성하지 않는 것 같습니다.



6

이것은 대부분의 JavaScript 프레임 워크 (jQuery, Angular, YUI, Bootstrap ...)가 IE8에서 IE6까지 가장 오래된 인터넷 익스플로러를 역으로 지원한다는 사실과 관련된 경고입니다.

언젠가는 이전 버전과의 호환성 지원이 중단되고 ( IE9가 다루기 때문에 IE8 / 7 / 6의 경우 )이 경고 (및 기타 IEish 버그)가 더 이상 표시되지 않습니다.

그것은 시간의 문제입니다 (현재 IE8은 10 %가 전 세계 점유율을 가지고 있으며 , 1 %에 도달하면 DEAD입니다 ) 한편 경고를 무시하고 선을 유지하십시오 :)


jQuery 2.xx는 IE9 이상 만 지원합니다. jQuery에서 IE8을 지원하려면 버전 1.xx를 사용해야합니다.
— Pete


3

많은 웹 사이트에서이 경고를 보았습니다. 또한 YUI 3 라이브러리에도 동일한 경고가 표시됩니다. 라이브러리에서 생성 된 경고입니다 (jQuery 또는 YUI인지 여부).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.