Как определить, что была показана новая мгновенная страница Google?

Я работаю над расширением для браузера, которое должно совершать вызов при обслуживании новой мгновенной страницы Google, а затем изменять результаты (например, SEOQuake).

Проблема: если пользователь вставит ссылку прямо в поле URL-адреса и нажмет Enter, произойдет загрузка новой страницы, и мое расширение запустится. Однако с Google Instant, хотя URL-адрес меняется по мере ввода запросов, технически вы все еще находитесь на той же странице, поэтому расширение не запускается.

Я посмотрел на код SEOQuake, и похоже, как они решают проблему:

document.body.addEventListener("DOMNodeInserted", sq_bindAsEventListener(this, function(event) { //

Это отличное решение, однако оно не идеально для меня, потому что, насколько я знаю, DomNodeInserted не поддерживается IE ниже версии 9. (сюрприз!)

Я связываю jQuery с приложением, поэтому у меня есть доступ ко всем функциям jQuery. Я думал об использовании .keypress() и просто подождал, пока в течение секунды не будет ввода - если это Google Instant, я точно знаю, что страница изменилась.

Еще одна мысль, которая у меня была, — следить за изменением URL-адреса; Кажется, я не могу найти какие-либо функции jquery или javascript, которые отслеживают, был ли изменен URL-адрес.

Как лучше всего узнать, что был выполнен мгновенный поиск Google?


person dsp_099    schedule 22.07.2012    source источник


Ответы (2)


Грубое решение: используйте setInterval() и проверьте, изменилось ли местоположение window.top (это означает, что был выполнен новый запрос).

person dsp_099    schedule 15.08.2012

Прослушивание hashchange может быть выходом.

Старый IE (‹8 ??) не даст вам событие, так что вам может понадобиться таймер. Все эти проблемы в случае, если Instant доступен в IE7, конечно, в чем я сомневаюсь, так или иначе.

person Krassimir    schedule 22.05.2013