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

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

Проблема: если пользователь вставит ссылку непосредственно в поле URL и нажмет ввод, произойдет загрузка новой страницы и запустится мое расширение. Однако в 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?

2 ответа

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

Прослушивание hashchange могло бы быть способом пойти.

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

Другие вопросы по тегам