2013-03-21 434 views
7

Pracuję nad rozszerzeniem przeglądarki (pomyśl SEOQuake) - Potrzebuję wyświetlić niektóre dane dotyczące wyświetlanych wyników wyszukiwania.Jak wykryć, że strona błyskawiczna Google została całkowicie załadowana?

Problem: jeśli coś zostanie dodane do strony wyników wyszukiwania dynamicznego Google, gdy jest jeszcze w trakcie wczytywania, spowoduje zastąpienie wszystkich dodatków. Przyłapałam się na pisaniu naprawdę nieudolnego biznesu setInterval (czekam, aż zawartość ol#rso przestanie zmieniać rozmiar, itp.), Więc przypuszczam, że oznacza to, że nie jestem pewien, w jaki sposób w niezawodny sposób określić, czy strona ładuje się.

Mogę po prostu czekać 1-2 sekundy, ale naprawdę chcę rozpocząć pobieranie danych, jak tylko wyniki są ładowane, aby zaoszczędzić maksymalny czas.

Edycja: Pamiętaj, nie mogę używać DOMElementCokolwiek, ponieważ IE8 go nie obsługuje.

+0

Nie jestem jeszcze pewien, czy istnieje dobre rozwiązanie oparte na różnych przeglądarkach. Pojawiają się nowe [Obserwatorzy Mutacji] (http://updates.html5rocks.com/2012/02/Detect-DOM-changes-with-Mutation-Observers), a nawet [Podsumowanie Mutacji] (https://code.google .com/p/mutation-summary /) biblioteka do pomocy, ale bez IE uwielbiam. Kolejne ciekawe podejście przy użyciu [wydarzeń animacji CSS3] (http://www.backalleycoder.com/2012/08/06/css-selector-listeners/), ale bez IE love :-p Jak o hack 'setInterval' dla IE i podsumowanie mutacji dla wszystkiego innego? – thirdender

+0

Może być możliwe użycie zdarzenia [onpropertychyz] (http://msdn.microsoft.com/en-us/library/ie/ms536956 (v = vs.85) .aspx) dla IE. – thirdender

Odpowiedz

3

Spróbuj tego:

window.addEventListener("message", function(e) {if(e.data == 'jrc') console.log('loaded')}, false); 

To powinno działać w IE 8+ i wszystkie inne przeglądarki: http://caniuse.com/#feat=x-doc-messaging

Jeśli to nie działa w IE 8 (nie można przetestować w mojej prawej Mac teraz), daj mi znać. Sądzę, że uzyskałem dość dobre zrozumienie rs.js w ciągu ostatniej godziny. ;)

+0

Edycja, która została odrzucona przez recenzentów, ponieważ powinna to być odpowiedź, sugeruje, że do tej pory powinna brzmieć "e.data.type ==" sr'' – mrks

Powiązane problemy