5

Z tego co wiem History.js jest polyfill dla HTML5 History/State APIs. Dlatego w nowoczesnych przeglądarkach powinno się po prostu używać popstate do odsłuchiwania zmian adresów URL. Więc, dlaczego w najnowszym Chrome widzę timer strzelający co 250 ms? Wydaje się, że jest to marnotrawstwem i co kilka sekund uruchamia narzędzie do zbierania śmieci.Dlaczego history.js używa setInterval (.., 250)?

Sprawdź to oficjalne History.js demo.

History.js demo page firing timer every 250ms

+0

Dlaczego nie używasz macierzystego JS? – RomanGorbatko

+1

@RomanGorbatko Musimy wspierać [IE9 i starsze przeglądarki Android] (http://caniuse.com/#feat=history). Dlatego wymagane jest użycie polyfill (czyż nie?). –

+0

Nie otrzymałem żadnego Timer Fired Records w wersji chromowej najnowszej – NavaRajan

Odpowiedz

0

nie wiem kod History.js, ale czytanie przez niego, wierzę @apsillers jest poprawna.

Jest skonfigurowany w przedziale 250ms między kolejkami. Niektóre z kolejki funkcji w tej kolejce wymagają przechwycenia stanu Historia. Te elementy wymuszają pukanie, aby przerwać, nazywając je zajętym.

Jeśli chodzi o to, dlaczego tak się dzieje w przeglądarkach HTML5, to wydaje mi się, że History.JS nie przełącza przełącznika tylko wtedy, gdy jest HTML5, a potem nic nie robi. Na ich github stwierdza jeden z nich ma być:

Podaj cross-kompatybilnego doświadczenie dla wszystkich przeglądarek HTML5 (Wszyscy wdrożenia API HTML5 Historia trochę inaczej powodując różne zachowania i czasami błędy - History.js poprawki to zapewnienie doświadczenie jest takie, jak oczekiwane/takie same/wielki całej przeglądarek HTML5)

Jeśli History.js wciąż robi jeszcze trochę pracy, która polega na kolejkowanie, to myślę, że oni korzystać z ruchliwą limit czasu.