Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Навигация на Js и неприятности, с этим связанные (https://javascript.ru/forum/dom-window/45693-navigaciya-na-js-i-nepriyatnosti-s-ehtim-svyazannye.html)

Mertil 12.03.2014 12:37

Навигация на Js и неприятности, с этим связанные
 
Обновляю сайт, для ускорения загрузки страниц на тематической странице стал использовать Jscript-подгрузку информации из другого файла с помощью function(eventObject), переход по ссылке без перезагрузки страницы, ссылки на страницу- по якорю(#). (пример тут- http://igor-26yu[dot]narod[dot]ru/ajaxlinki/index5.html )
Но есть пару капель дегтя-
- Для подгружаемого контента не работают Js-плагины? к примеру Easy Tooltip плагин всплывающих подсказок,
-При такой организации навигации в коде страницы подгружаемая информация не отражается -возникает вопрос- будет индексироваться поисковыми машинами (подозреваю что нет), и если не будет- какие варианты для преодоления этого момента? не хотелось бы отказываться от такого удобного варианта.

danik.js 12.03.2014 12:45

Цитата:

Сообщение от Mertil
- Для подгружаемого контента не работают Js-плагины? к примеру Easy Tooltip плагин всплывающих подсказок,

Полагаю что скрипт не использует делегирование событий, а вместо этого навешивает обработчики на непосредственно элементы. Таким образом, на вновь созданных элементах обработчиков нет. Пробуй переинициализировать плагин.
Цитата:

Сообщение от Mertil
какие варианты для преодоления этого момента?

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

Есть еще вариант с использованием #! и обработкой серваком спец-запросов от ПС, но это все ни к чему.

Mertil 13.03.2014 02:59

Спасибо,
Цитата:

Сообщение от danik.js (Сообщение 302229)
... Пробуй переинициализировать плагин.

Да, вешается на теги таким образом:
$(document).ready(function(){
$("img").easyTooltip();
});
Можно немножко ликбеза?
Подгрузка происходит через
"$('#d1').click( function(eventObject)
{eventObject.preventDefault();$('#outputinfa').loa d( "forindex5.html #infa1")[ТУТ];});"
Как я понимаю, [тут] и нужно инициализировать easyTooltip в отношении загружаемого контента, но с синтаксисом ни как не выходит...
мануалы курил, жевал, но опыта, чесно говоря, маловато..

Цитата:

Сообщение от danik.js (Сообщение 302229)
... Самый простой и используемый вариант: делаешь сначала чтоб сайт работал без всяких скриптов. То есть обычные ссылочки. Таким образом с ПС проблем не возникает. А далее, при наличии JS в юзерагенте, обходишь ссылки, вешаешь обработчик click ну и так далее.

Да, думал об этом, и раньше всё на стороне сервера решалось, стал обновлять- увлекся реализацией, и ублудил на сторону браузера- что не верно в корне, но визуально весьма увлекательно выходит, хотя изначально озадачивлся кроссбраузерностью и простотой решений :-?

danik.js 13.03.2014 12:30

Цитата:

Сообщение от Mertil
мануалы курил, жевал, но опыта, чесно говоря, маловато..

Насчет load() не знаю, но в $.ajax в обратном вызове (параметр success) обновляешь HTML и вызываешь easyTooltip().
В load() вроде тоже можно указать callback, но он вызывается для предобработки ответа сервера, то есть html уже загружен, но еще не вставлен в документ.

krasovsky 13.03.2014 13:32

Цитата:

Сообщение от Mertil (Сообщение 302343)
Спасибо,
Да, вешается на теги таким образом:
$(document).ready(function(){
$("img").easyTooltip();
});
Можно немножко ликбеза?
Подгрузка происходит через
"$('#d1').click( function(eventObject)
{eventObject.preventDefault();$('#outputinfa').loa d( "forindex5.html #infa1")[ТУТ];});"
Как я понимаю, [тут] и нужно инициализировать easyTooltip в отношении загружаемого контента, но с синтаксисом ни как не выходит...
мануалы курил, жевал, но опыта, чесно говоря, маловато..

Во первых, смотри доку https://api.jquery.com/load/
Там три аргумента - урл,дата и коллбэк. Ты у себя указал только урл, дату тебе можно пропутить.
$('#outputinfa').load("forindex5.html#",function(text,status,xhr){
//твой коллбэк доблжен был быть тут.Тебе осталось только применить твой тултип для вновь загруженного контента.
var html = $(text).find('img').easyTooltip();//text этот твой загруженный forindex5.html
$('body').append(html);//вставляем его на страницу.
});

Возможно, придется сначала вставить а потом уже применять тултип.


Часовой пояс GMT +3, время: 12:19.