Клуб Яндекс.Поиска для сайта

Не отлавливается событие yass.ready

Доброй ночи. Никак не можем разобраться, что не так с кодом. Нужно по упомянутому событию производить некоторую модификацию выдачи (сделать так, чтобы каждая ссылка, ведущая на результат, открывалась в том же окне).

Перепробовали все, поставили злополучный кусок кода из тьюториала прямо в код боевой версии: ничего.

http://booknik.ru/search/?searchid=2126366&text=поиск&web=0

Выручайте, пожалуйста.

11 комментариев
Елена Першина
28 января 2016, 00:54

Добры день, а как в вебинаре показано, пробовали делать:

http://www.youtube.com/watch?v=KTA7JmLJ57c (с12.37 и далее - там как раз об этом).

Если да, то что конкретно не получается, можете описать?

 

Именно про этот вебинар я и говорил. События yass.ready, по всей видимости, попросту не возникает.

Т.е. элементарная конструкция, вызывающая алерт при готовности DOM результатов поиска, не срабатывает.

Елена Першина
28 января 2016, 00:54

Ясно. Сейчас посмотрю и отпишусь.

Елена Першина
28 января 2016, 00:54

 Добрый день!

Судя по всему, проблема в следующем: вы вставляете результаты через iframe, поэтому и не можете поймать событие. Чтобы его поймать, нужно вставлять результаты не через iframe, а HTML + CSS. Это можно настроить здесь в разделе «код…» настроек вашего поиска. То есть, нужно изменить эту настройку, заново скопировать новый код, вставить его на сайт – а потом отлавливать событие.

Спасибо, теперь все отлично!

У меня тоже не получилось отловить. Потому что jQuery разные....

 

Вот так сделал:

 


(function(w,c){(w[c]||(w[c]=[])).push(function(){
$repeat = setInterval(function(){
if ("undefined"!==Ya.Site.$) {
Ya.Site.$('#ya-site-results').bind('Ya.site-results-show', function(){
Ya.Site.$('.b-serp-item__title-link[target="_blank"]').prop('target', '_top');
});
clearInterval($repeat);
}
}, 15);
setTimeout(function(){ clearInterval($repeat); }, 5000);
})})(window,'yandex_site_callbacks');

Не знаю, может я опять где протупил, но не возникает этого события

bind('Ya.site-results-show')

в yandex_site_callbacks добавляется функция, которая создаёт таймер, срабатывающий каждые 15мс
фукнция проверяет появления Ya.Site.$
и вот в нем уже есть Ya.site-results-show

 

 

Не-не, я прекрасно понимаю логику; я ловлю Ya.Site.$, но никогда не возникает Ya.site-results-show. Может, как пишут выше, что дело в использовании айфрейма (крос-доменные органичения никто не отменял).

Елена Першина
28 января 2016, 00:54

Добрый день! Я правильно понимаю, что вам удалось отловить? Или помощь все еще нужна?

И вам большое спасибо!