2013-03-21 2 views
7

Я работаю над расширением браузера (думаю, SEOQuake) - Мне нужно отобразить некоторые данные о результатах поиска, которые показаны.Как обнаружить, что страница Google Instant загружена полностью?

Проблема. Если что-либо добавлено на страницу результатов поиска Google Instant, пока она все еще находится в процессе загрузки, она перезапишет любые дополнения. Я поймал себя на том, что я написал действительно неуклюжий бизнес setInterval (до тех пор, пока содержимое ol#rso не перестанет меняться в размерах, что-то вроде этого), поэтому я полагаю, что это означает, что я не уверен, как надежно определить, будет ли загружена страница.

Редактировать: Имейте в виду, что я не могу использовать DOMElement, потому что IE8 не поддерживает его.

+0

Я не уверен, есть ли еще кросс-браузерное решение. Существуют новые [Наблюдатели за мутациями] (http://updates.html5rocks.com/2012/02/Detect-DOM-changes-with-Mutation-Observers) и даже [Сводка мутаций] (https://code.google .com/p/mutation-summary /), чтобы помочь, но IE не любит. Еще один интересный подход, использующий [анимационные события CSS3] (http://www.backalleycoder.com/2012/08/06/css-selector-listeners/), но IE не любит: -p Как насчет 'setInterval' для IE и описание мутаций для всего остального? – thirdender

+0

Возможно, вы можете использовать событие [onpropertychange] (http://msdn.microsoft.com/en-us/library/ie/ms536956 (v = vs.85) .aspx) для IE. – thirdender

ответ

3

Попробуйте это:

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

Это должно работать в IE 8+ и все другие браузеры: http://caniuse.com/#feat=x-doc-messaging

Если это не работает в IE 8 (не могу проверить в на моем Mac право теперь), дайте мне знать. Я считаю, что я получил некоторое разумное понимание rs.js в последний час. ;)

+0

Редактирование, которое было отвергнуто рецензентами, потому что это должен был быть ответ, который предположил, что к настоящему времени он должен сказать 'e.data.type == 'sr'' – mrks