Programing

event.layerX 및 event.layerY와 관련된 WebKit 문제

lottogame 2020. 2. 12. 07:57
반응형

event.layerX 및 event.layerY와 관련된 WebKit 문제


방금 최신 (카나리아) Chrome 빌드에서 더 이상 사용되지 않는 경고가 표시됩니다.

event.layerX 및 event.layerY는 WebKit에서 중단되어 더 이상 사용되지 않습니다. 머지 않아 엔진에서 제거 될 것입니다.

jQuery가 문제를 일으키는 것처럼 보입니다.

사용하고 있습니다 : jquery-1.6.1.min.js.

최신 jQuery 버전으로 업그레이드하는 데 도움이되거나 아직 수정되지 않았거나 Chrome 버그이거나 다른 것입니다.

추신

일반적인 오류라고 생각하기 때문에 코드를 표시 할 수 없지만 jQuery 객체에 액세스하려고 할 때 또는 jQuery가 layerX / layerY에 액세스하려고 할 때 경고가 발생하는 것으로 의심됩니다 (잘 알고 있습니다) 오류 : P).

jQuery는 이러한 속성을 jQuery 객체에 복사합니다.

그래서...

무슨 일이야?

편집하다

jQuery 1.7이 출시되었으며이 문제가 해결되었습니다.

자세히보기 여기, 자신의 블로그에서 .


무슨 일이야!?

"jQuery는 아마도 이러한 속성을 jQuery 객체에 복사합니다." 당신은 정확히 맞으므로 이미 알고있는 것처럼 들립니다! :)

잘만되면 jQuery가 코드를 업데이트하여 그만 두지 만 동시에 WebKit은 이벤트에 대해 지원 중단 경고를 기록하는 것보다 더 잘 알고 있어야합니다 (적어도 제 생각에는). 하나의 mousemove 핸들러와 콘솔이 폭발합니다. :)

최근 jQuery 티켓은 다음과 같습니다. http://bugs.jquery.com/ticket/10531

업데이트 : jQuery 1.7로 업그레이드하면 이제 수정되었습니다.

jQuery를 업그레이드해도 문제가 해결되지 않으면 Jake가 답변 에서 언급 한대로 사용 된 확장 / 플러그인과 관련이있을 수 있습니다 .


http://jsperf.com/removing-event-props/2

임시 수정은 jQuery를 통해 이벤트 바인딩을 수행하기 전에이 코드를 실행하는 것입니다.

(function(){
    // remove layerX and layerY
    var all = $.event.props,
        len = all.length,
        res = [];
    while (len--) {
      var el = all[len];
      if (el != 'layerX' && el != 'layerY') res.push(el);
    }
    $.event.props = res;
}());

최신 정보

이벤트 소품을 제거하는 가장 빠른 방법은 최신 성능 테스트참조하십시오 .


이것에 대한 가장 짧은 해결책은 다음과 같습니다.

$.event.props = $.event.props.join('|').replace('layerX|layerY|', '').split('|');

이 메시지의 엄청난 양 (gmail을 사용하는 동안 80000 개를 얻었습니다) 은 실제로 Chrome의 버그입니다.

Chromium에 문제를 표시 해야합니다 .


Chrome 확장 프로그램으로 인해 발생할 수도 있으므로 jQuery 업데이트가 작동하지 않는지 확인하십시오.


다음과 같은 경우에 대비하여 $ .event.props의 원래 인스턴스 (배열 일 수도 있고 아닐 수도 있음)를 바꾸지 않고 또 다른 한 줄 수정이 있습니다.

$.each(["layerX","layerY"], function(i,v) { if((i=p.indexOf(v)) > -1) $.fn.splice.call($.event.props,i,1) })

이벤트를 호출 한 후 이것을 사용했습니다.

$.event.props.splice($.event.props.indexOf("layerY"),1);
$.event.props.splice($.event.props.indexOf("layerX"),1);

내 코드 에서이 패치를 만든 이후 경고 메시지가 없습니다.


다른 답변에 나열된 구성 문제뿐만 아니라이 오류는 사용자 코드의 간단한 오류로 인해 발생할 수 있습니다. jQuery ID 선택기에서 '#'을 잊어 버렸습니다.

나는 코드처럼 보인다

$('datenotset_2341').click(function(){
 ....etc....
});

( "datenotset"앞의 #을 생략 함)

(분명히) 작동하지 않을뿐만 아니라 Chrome 에서이 오류 메시지가 트리거되었습니다.


내 코드 에서이 문제가 발생했습니다. 내가 사용하고있는 디버깅 / 검사 도구의 일부로 이벤트 객체의 모든 속성을 반복하고있는 것으로 나타났습니다. 이 특정 인스턴스에서 jQuery의 $ .extend를 사용하여 나중에 검사를 위해 객체를 복제했지만 다양한 툴킷의 표준 반복 기술 중 하나라도 경고를 트리거했을 것으로 생각합니다.

여기서는 layerX 또는 layerY의 인스턴스에 대한 코드베이스를 검색하는 것에 대한 초기 생각이 도움이되지 않았기 때문에 여기에서 언급했습니다.

참고 URL : https://stackoverflow.com/questions/7825448/webkit-issues-with-event-layerx-and-event-layery



반응형