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에서 인식되고 수정되었습니다 ( herehere 참조 ).


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.