Ребят, я готов если надо 3000 заплатить, просто нужно грамотное решение.
Да, уж про кнопки это жестко. Я не программист и самостоятельно не в силах разобраться.
Тем более хотелось бы урл оставлять неизменным при подборе товаров и пагинации.
Если сможет кто помочь /ru/forum/764094 буду рад. Спасибо
Кто то может помочь? Никак не сделать с помощью js history так чтобы в историю попадал нужный урл (он при подборе товара не меняется). И при нажатии кнопки назад нужно чтобы он просто не менялся, как я понимаю.
Вот код функции которая выводит нужный контент (контент формируется в load_data.php)
$(document).ready(function(){ function loading_show(){ $('#loading').html("<img src='images/loading.gif'/>").fadeIn('fast'); } function loading_hide(){ $('#loading').fadeOut('fast'); } function loadData(page){ loading_show(); var str = $("#myform").serialize(); $.ajax ({ type: "POST", url: "load_data.php", data: {page : page, str: str}, success: function(msg) { $("#container").ajaxComplete(function(event, request, settings) { loading_hide(); $("#container").html(msg); }); } }); } loadData(1); // For first time page load default results $('#container .pagination li.active').live('click',function(){ var page = $(this).attr('p'); loadData(page); }); $('#container .pagination2 .active2').live('click',function(){ loadData(1); }); $('#container .pagination2 .sbros').live('click',function(){ alert('Я кнопка. Меня нажали!'); $('option').val('1'); // сброс значений полей option // $('textarea').val(''); // сброс значений полей textarea loadData(1); }); $('#go_btn').live('click',function(){ var page = parseInt($('.goto').val()); var no_of_pages = parseInt($('.total').attr('a')); if(page != 0 && page <= no_of_pages){ loadData(page); }else{ alert('Enter a PAGE between 1 and '+no_of_pages); $('.goto').val("").focus(); return false; } }); });
и нашел код функции которая в принципе делает историю, такой как надо, но мне не соеденить эти 2 кода никак
window.onload = function() { // просто функция добавляет DIV с нужным нам текстом function appendText( text ) { var div = document.createElement( "div" ); div.innerHTML = text; document.body.appendChild( div ); } // функция для ссылок обрабатывается при клике на ссылку function handlerAnchors() { // заполним хранилище чем нибудь var state = { title: this.getAttribute( "title" ), url: this.getAttribute( "href", 2 ) // двоечка нужна для ИЕ6-7 } // заносим ссылку в историю history.pushState( state, state.title, state.url ); // тут можете вызвать подгруздку данных и т.п. // ... appendText( '<b>Вы перешли по ссылке:</b> ' + '<span style="color: green;">' + state.url + '</span>' ); // не даем выполнить действие по умолчанию return false; } // ищем все ссылки var anchors = document.getElementsByTagName( 'a' ); // вешаем события на все ссылки в нашем документе for( var i = 0; i < anchors.length; i++ ) { anchors[ i ].onclick = handlerAnchors; } // вешаем событие на popstate которое срабатывает // при нажатии back/forward в браузере window.onpopstate = function( e ) { // просто сообщение appendText( '<b>Вы вернулись на страницу:</b> ' + '<span style="color: green;">' + history.location + '</span>' + '<br/><b>state:</b> <span style="color: green;">' + JSON.stringify( history.state ) + '</span><br/><br/>' ); // тут можете вызвать подгруздку данных и т.п. // ... } }
ps мне в историю надо записать как я понял - url, номер страницы (из пагинации = page) и переменную str (эта переменная образуется из полей формы).
При нажатии назад как я понимаю - надо вернуть урл страницы, и остальные данные.
Ребят, я конечно нуб в этом деле, пытаюсь разобраться.
Вот на примере викимарта - у них anchor-навигация как я понял, все что после # - это информация которая позволяет понять какие именно данные нужно выводить в контент.
Вот что вижу, что у них в индексе урлы есть http://yandex.ru/yandsearch?p=1&text=url%3Ahttp%3A%2F%2Felectronics.wikimart.ru%2Fcommunication%2Fcell%2F%3F*&clid=1823013&lr=2
А юзеру урлы показывает с якорем. Я то честно говоря думал это сделано чтобы закрыть страницы от индексации, чтобы не плодить дубли полные или частичные.
У меня ситуация другая - я хочу сделать страницу подбора материала с формой отбора по критериям - но так чтобы урл не перезагружался, выводился нужный контент в зависимости от выбранных характеристик, была пагинация тоже без смены урла и при этом работали кнопки назад вперед. Сейчас сделано на jQuerry но кнопки вперед назад не работают.
У меня один вариант - js history ? Спасибо
Почитал немного про hash и js history. Выбрать сложно.
Вообще я всю эту затею решил выполнить только из-за ПФ.
Т.е. хочется, чтобы юзер придя в страницу "каталог ламината" - не уходил из неё, а подбирал материал по параметрам. Так бы сделал обычный подбор материала с GET строкой, да позакрывал в роботсе урлы с номерами страниц. Может я зря заморачиваюсь? Извините, за тупой вопрос.
Вы про таймер, который проверяет изменился ли hash страницы?
И вопрос - то что вы показали и js history (о котором советует почитать Chukcha) это одно и тоже?---------- Добавлено 25.12.2012 в 22:57 ----------
Так, а вроде ссылка (урл) с якорем не индексируется...Или я ошибаюсь
Спасибо. Т.е. ни одного сайта в рунете нет, который бы контент показывал на Аяксе (например подбор товаров или раздел новостей с аннонсами новостей" и при этом переход в новость по ссылке, а обратно кнопками "назад/вперед" (браузера) осуществлялся гарантированно правильно?
Здесь, например, http://unmedia.nichost.ru/novosti.html работает.
Перейдя например на страницу "3" в пагинации - выберем новость, клинем, прочитаем, нажмем "назад" - браузер открывает нам то что нужно. Т.е. последнюю открытую страницу в пагинации.
Но вот не пойму, реально ли сделать чтобы кликая по пагинации, потом нажав "назад" - работала такая же фишка...---------- Добавлено 21.12.2012 в 18:13 ----------
Вот не могу найти, как сделать так чтобы скрипт сайта понимал, что нажата именно "назад" и нужно взять данные например от туда то...url, page и uslovie которые я пропишу.
Авторизации юзверя нет в принципе.
С сессиями я уже всю голову сломал, ничего не получается 😕
Так как форма отбора, превью товаров и пагинация выводится Аяксом (если правильно понял jQuerry).
Уже убрал Я.Метрику и пробую сделать возможность при нажатии кнопки "назад" загрузки предыдущих данных - т.е. условия отбора, номер страницы.
Но, проблема, не сделать даже если в пагинации юзер выбрал страницу "7" например, потом нажал "назад" - так вообще перекидывает на предыдущий урл (это логично, но не справиться с проблемой).😒
ps я так понимаю задача идентифицировать нажал ли он кнопку "назад" или просто выбрал другую страницу в пагинации..а вот идентифицировать нажатие не знаю как.
ps2 Файл load.php в нем форма подбора товаров, вывод превью товаров и пагинация. Файл load подгружается функцией, которая в него передает данные о номере страницы и выбранных условиях отбора (jQuerry считывает инфо что выбрал юзер в форме). Я нубски говорю, но первый раз столкнулся с аяксом. Так вот при нажатии кнопки назад - страница перезагружается, а значит ни page ни uslovie не заданы.
ps3 понимаю что нужно засунуть куда то урл страницы, её page и uslovie чтобы при нажатии "назад" эти данные передавались в load.php
Вообще реально это сделать?
Страница не перезагружается, а только меняется контент внутри неё. При нажатии кнопки "назад" - соответственно не страница перезагружается, а только контент возвращается в предыдущий вариант. А то может это не реально, а?
[umka], DiAksID- спасибо большое.
Оказывается:
без установки Я.Метрики - нормально кнопка "назад" браузера работает только в Opera и Mozilla. В Maxton, Chrome, IE - данные отбора сбрасываются (как будто юзер пришел на страницу впервый раз).
с установкой Я.Метрики - при нажатии кнопки "назад" в любом браузере сбрасываются данные отбора.
Это что то меняет? Подскажите, пожалуйста.