Właśnie zauważyłem, że dostaję mnóstwo przestarzałych ostrzeżeń w najnowszej (kanaryjskiej) wersji Chrome.
event.layerX i event.layerY są uszkodzone i nieaktualne w WebKit. Zostaną one usunięte z silnika w najbliższej przyszłości.
Wygląda na to, że jQuery coś psuje.
Używam: jquery-1.6.1.min.js
.
Czy pomógłby zaktualizować do najnowszej wersji jQuery, czy nie został jeszcze naprawiony, czy jest to błąd Chrome, czy jest to coś innego.
PS
Nie mogę wyświetlić kodu, ponieważ myślę, że to ogólny błąd, ale podejrzewam, że ostrzeżenia są generowane, gdy próbuję uzyskać dostęp do obiektu jQuery lub gdy jQuery próbuje uzyskać dostęp do warstwyX / layerY (cóż, jestem pewien, że tak jest, biorąc pod uwagę błąd: P).
jQuery prawdopodobnie kopiuje te właściwości do obiektu jQuery.
Więc...
Co się dzieje?
EDYTOWAĆ
jQuery 1.7 jest już dostępny i rozwiązuje ten problem.
Przeczytaj więcej na ich blogu tutaj .
źródło
@
do tłumienia błędów.layerX
alayerY
przynajmniej do czasu, aż dokładniej się nad tym zastanowią. Warto również zauważyć, że IE ostatnio dodałlayerX
ilayerY
nie miał go aż do wersji 9. Domyślam się, że te właściwości nie znikną - przynajmniej dopóki nie będzie odpowiedniej wymiany W3C, co nie nastąpi wkrótce. Ostrzeżenia zniknęły w najnowszych wersjach WebKit.Odpowiedzi:
Co się dzieje!?
„jQuery prawdopodobnie kopiuje te właściwości do obiektu jQuery.” Masz dokładnie rację, więc brzmi to tak, jakbyś już wiedział! :)
Mam nadzieję, że jQuery zaktualizuje swój kod, aby przestać go dotykać, ale jednocześnie WebKit powinien był wiedzieć lepiej niż rejestrować ostrzeżenie o wycofaniu się z wydarzenia (przynajmniej moim zdaniem). Jeden manipulator myszy i twoja konsola wybucha. :)
Oto najnowszy bilet jQuery: http://bugs.jquery.com/ticket/10531
AKTUALIZACJA: Zostało to naprawione teraz, jeśli uaktualnisz do jQuery 1.7.
Pamiętaj, że jeśli aktualizacja jQuery nie rozwiąże problemu, może to mieć coś wspólnego z używanymi rozszerzeniami / wtyczkami, jak stwierdził Jake w swojej odpowiedzi .
źródło
http://jsperf.com/removing-event-props/2
Tymczasową poprawką jest uruchomienie tego kodu przed wykonaniem jakiegokolwiek wiązania zdarzenia za pomocą jQuery:
AKTUALIZACJA
Zobacz najnowsze testy wydajności, aby dowiedzieć się, jaki jest najszybszy sposób usunięcia rekwizytów zdarzeń.
źródło
Najkrótszym rozwiązaniem tego jest jeden linijka:
źródło
Ogromna liczba tych wiadomości (właśnie otrzymałem ich 80000 podczas korzystania z Gmaila) jest rzeczywiście błędem w Chrome.
Powinieneś oznaczyć gwiazdkę na Chromium .
źródło
Przyczyną mogą być również rozszerzenia Chrome, więc sprawdź je, jeśli aktualizacja jQuery nie działa.
źródło
Oto kolejna poprawka dla jednej linii, bez zastępowania oryginalnej instancji $ .event.props (która może, ale nie musi być tablicą), na wszelki wypadek :-)
źródło
Użyłem tego po wywołaniu dowolnego zdarzenia:
To działało dla mnie, nie mam żadnych komunikatów ostrzegawczych, ponieważ wykonałem tę łatkę w moim kodzie.
źródło
Oprócz problemów z konfiguracją wymienionych w innych odpowiedziach, ten błąd może zostać wywołany przez prosty błąd we własnym kodzie: zapomnienie „#” z selektora jQuery ID.
Miałem wygląd kodu
(brakuje # przed „zestawem danych”)
Oprócz (oczywiście) awarii, wywołał ten komunikat o błędzie w Chrome.
źródło
Natrafiłem na ten problem we własnym kodzie. Okazuje się, że iterowałem wszystkie właściwości obiektu zdarzenia jako część używanego narzędzia do debugowania / inspekcji. W tym konkretnym przypadku użyłem $ .extend jQuery do sklonowania obiektu do późniejszej kontroli, ale wierzę, że każda ze standardowych technik iteracji w różnych zestawach narzędzi również wywołałaby ostrzeżenie.
Wspominam o tym tutaj, ponieważ moja pierwotna myśl o zwykłym przeszukaniu bazy kodu w poszukiwaniu instancji warstwy X lub warstwy Y nie pomogła - do właściwości odwoływano się ogólnie, a nie według nazwy.
źródło