2013-03-21 386 views
7

Ich arbeite an einer Browser-Erweiterung (Think SEOQuake) - Ich muss einige Daten über die Suchergebnisse anzeigen, die angezeigt werden.Wie erkennt man, dass die Google Instant-Seite vollständig geladen wurde?

Problem: Wenn der Google Instant-Ergebnisseite noch etwas hinzugefügt wird, während sie gerade geladen wird, werden alle hinzugefügten Elemente überschrieben. Ich habe mich dabei erwischt, etwas wirklich wackeliges setInterval-Geschäft zu schreiben (warte, bis der Inhalt von ol#rso aufhört, sich in der Größe zu ändern, so etwas), also nehme ich an, dass ich nicht sicher bin, wie man zuverlässig feststellen kann, ob die Seite fertig geladen ist.

I könnte nur haben warten 1-2 Sekunden, aber ich möchte wirklich die Daten abrufen, sobald die Ergebnisse geladen werden, um die maximale Zeit zu sparen.

Edit: Beachten Sie, ich kann DOMElementwhatever nicht verwenden, weil IE8 es nicht unterstützt.

+0

Ich bin mir nicht sicher, ob es eine gute Cross-Browser-Lösung gibt. Es gibt die neuen [Mutation Observer] (http://updates.html5rocks.com/2012/02/Detect-DOM-changes-with-Mutation-Observers) und sogar die [Mutation Summary] (https://code.google .com/p/mutation-summary /) Bibliothek zu helfen, aber kein IE Liebe. Ein weiterer interessanter Ansatz mit [CSS3 Animationsereignissen] (http://www.backalleycoder.com/2012/08/06/css-selector-listeners/), aber kein IE Liebe: -p Wie wäre es mit einem 'setInterval' Hack für IE und Mutationszusammenfassung für alles andere? – thirdender

+0

Möglicherweise können Sie das Ereignis [onpropertychange] (http://msdn.microsoft.com/en-us/library/ie/ms536956 (v = vs.85) .aspx) für IE verwenden. – thirdender

Antwort

3

Versuchen Sie folgendes:

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

, die in IE funktionieren sollte 8+ und alle anderen Browser: http://caniuse.com/#feat=x-doc-messaging

Wenn das nicht in IE 8 nicht funktioniert (nicht testen in auf meinem Mac Recht jetzt), lass es mich wissen. Ich glaube, dass ich die rs.js in der letzten Stunde ziemlich gut verstanden habe. ;)

+0

Eine Bearbeitung, die von Prüfern abgelehnt wurde, weil sie eine Antwort hätte sein sollen, deutete darauf hin, dass sie jetzt "e.data.type == 'sr'" sagen sollte – mrks

Verwandte Themen