Mam aplikację JavaScript, która polega na przechwytywaniu zdarzeń klawiatury w obszarze tekstowym. Podczas testowania i debugowania go w Firefoksie (14.x) za pomocą firebuga (1.10.2) zauważyłem, że moja aplikacja zachowuje się inaczej, gdy mam aktywne punkty przerwania i działa debugger.Wykryj, kiedy Firebug (lub inny debuger internetowy) używany do debugowania
W jaki sposób wykrywać Firebuga, ale chciałbym wiedzieć, czy możliwe jest wykrycie (z Javascriptem), gdy Firebug jest rzeczywiście używany do debugowania?
Edit. Oto przykład na jakiejś przypadkowej stronie
This site połowy kluczowym wydarzeniem w polu tekstowym, wypisuje kod znaku i zastępuje wciśnięty klawisz z reprezentacji tekstowej (tj „enter” dla klawisz Enter) lub wielką literą (jeśli jest to litera).
Kiedy debuguję go w przeglądarce Chrome i umieszczam punkt przerwania w funkcji słuchacza, nic się nie dzieje po osiągnięciu punktu przerwania (zgodnie z oczekiwaniami), kiedy wznawiam skrypt, tekst jest drukowany normalnie.
Kiedy debuguję go Firebug w Firefoksie: Powiedzmy, że wcześniej naciskałem literę "e", a pasek wprowadzania zawiera tekst "E". Włączyć punkt przerwania i nacisnąć literę "z". Firebug zatrzymuje się w punkcie przerwania, ale pasek wprowadzania ma teraz tekst "Ez" zamiast "E". Kiedy wznowię skrypt, tekst ten zostanie zastąpiony przez "Z" zgodnie z oczekiwaniami.
Wypróbowałem inny debugger Firefox (Venkman 0.9.89) i to samo się stało. Zgaduję więc, że jest to problem z Firefoksem, a nie problem z debuggerem. Pytanie może być bardziej ogólne, czy można je wykryć, gdy debugowany jest kod Javascript?
To jest * bardzo * wymaganie nieparzyste.Jak Twoja aplikacja zachowuje się inaczej? Być może powinieneś raczej zaadresować i naprawić zachowanie aplikacji, niż próbować ją obejść - zwykle nie powinno zachowywać się inaczej podczas debugowania i być może za tym stoi problem architektoniczny. A co z wieloma innymi debuggerami? Musiałbyś je wszystkie wykryć ... –
Czy działa inaczej, gdy Firebug działa, nawet jeśli nie masz żadnych punktów przerwania ani innych różnic w porównaniu z przebiegami innymi niż Firebug? –
Przechwytywam zdarzenie, przetwarzam je i zapobiegam. Podczas debugowania metody, która wykonuje pracę, zdarzenie faktycznie dzieje się przed wywołaniem mojej metody, dlatego nie jestem w stanie temu zapobiec. Ponieważ moja aplikacja działa, gdy Firebug jest wyłączony, przypuszczam, że to zachowanie nie było problemem w Firefoksie. Znalezienie innego debuggera nie przyszło mi do głowy, dziękuję za pomysł! Ponadto, gdy Firebug jest włączony, ale nie ma debugowania, wszystko działa poprawnie. – Bikush