[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Грузить контент в одну страницу, но со ссылками
goodguy
Здравствуйте!
(уважаемые модераторы, не знаю правильно ли я выбрал раздел, так как это и других технологий касается, переместите в более подходящий раздел, пожалуйста, если он есть)
Возник такой вопрос, который меня мучает уже несколько дней. Обычно я делал сайты простым способом, постранично. Юзер нажимает на ссылку и ему загружается новая страница. Все легко и просто. Но сейчас встала задача несколько иная. Нужно, чтобы страница не перезагружалась, а весь контент грузился внутрь определенного контейнера внутри нее. Это я решил через AJAX. Но проблема в том, что мне нужны нормальные ссылки, типа таких:
http://example.com/shop/kakoeto-krutoye-platye Чтобы пользователи могли делиться ссылками, и поисковые движки лучше индексировали сайт. И вопрос не в том как сделать такие ссылки, а в том как сделать так, чтобы при загрузке контента через AJAX внутрь уже открытой страницы в адресной строке появлялась нужная ссылка, но страница не перезагружалась. Уже весь мозг сломал. Я могу легко менять якорь (хэш) # из JS, но при использовании якоря кнопки назад и вперед в браузере работают не так как надо.
В общем, мне нужно сделать примерно так, как в ВКонтакте. Если там нажать на "Мои сообщения" страница не перезагружается, а внутри нее просто откроются сообщения. Но если в адресную строку ввести https://vk.com/im, то так же сразу откроется страница сообщений. Как такого можно добиться? Хотя бы подтолкните в какую сторону копать. Не хочется придумывать разные костыли.
Так же работает github. У них не используется хэштег, но ссылка меняется
goodguy
Уже сам нашел ответ http://stackoverflow.com/questions/352343/...eshing-the-page
но это, естественно, не работает в 8м осле. Поэтому вопрос все равно в силе
vagrand
Все легко и просто. Таким ссылкам присваиваешь css класс, например ajax-link, а у самой ссылки задаешь нормальный href. Затем пишешь несложный JS скрипт, который находит ссылки по данному классу и навешивает на них onclick обработчик, который уже берет URL из href-а и подтягивает его через AJAX. Когда же на страницу зайдет поисковый бот, то JS скрипт не сработает, а ссылки останутся.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
goodguy
Да, но ссылка-то в адресной строке не поменяется при этом
А мне надо, чтобы менялась
vagrand
goodguy
Цитата
Я примерно так и предполагал сам, только без css класса и onclick обработчика.


Интересно как?

Цитата
Через AJAX то она загрузится, но в адресной строке-то ничего не поменяется.


А зачем это нужно?

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
goodguy
Цитата
Интересно как?

Я сначала не так понял ответ. Думал, что речь идет о вводе ссылки в адресную строку, чтобы исходя из ее переменных грузануть страницу аджаксом. При этом можно просто прочитать переменные так window.location.search.substring(1).split("&");
Но потом перечитал ответ, и понял, что имелось в виду другое

Цитата
А зачем это нужно?

Допустим смотрит какая-нибудь чикса товары в интернет магазине, открывая новые нажимая на кнопки, и тут ей кое что нравится и она решает показать подружке: "ой, смотри какой платье крутое" и кидает ей ссылку. А та открывает эту example.com и говорит "нет там никакого платья, за дуру меня держишь чтоли?"
Ну, как-то так.
То есть если бы была ссылка, то при вводе ее в адресную строку легко можно загрузить аджаксом нужную страницу, но ссылку то изначально скопировать не откуда
vagrand
Для этого реализуют функционал "Поделится", например отправка на email прямо с сайта

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
goodguy
Не, фигня это все. Многие хотят скинуть ссылку просто в личку. На почту слать вообще не удобно, а кидать на стену в вк или в одноклассники тоже не всегда вариант
Я просто своими глазами вижу, что то, что я описал работает в ВК, на гитхабе и еще много где. Стало быть это возможно даже без html5
vagrand
Ну раз фигня, то я умолкаю. Поделитесь потом своей божественной мудростью, как узнаете истину.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
kjdgh
Цитата (vagrand @ 21.06.2014 - 22:25)
Ну раз фигня, то я умолкаю. Поделитесь потом своей божественной мудростью, как узнаете истину.

ТС хочет дабы со сменой страницы менялась и ссылка в арбузе. Мне кажется это правильная мысль. Жаль не шарю в js(

_____________
Новичек в программировании и вообще не разбираюсь в этом, так что не вините.



kjdgh
Цитата (goodguy @ 21.06.2014 - 22:18)
Не, фигня это все. Многие хотят скинуть ссылку просто в личку. На почту слать вообще не удобно, а кидать на стену в вк или в одноклассники тоже не всегда вариант
Я просто своими глазами вижу, что то, что я описал работает в ВК, на гитхабе и еще много где. Стало быть это возможно даже без html5

html5 тебе уж точно не поможет )

_____________
Новичек в программировании и вообще не разбираюсь в этом, так что не вините.



goodguy
Цитата
Ну раз фигня, то я умолкаю. Поделитесь потом своей божественной мудростью, как узнаете истину.

Только сейчас заметил, что в 8м осле гит перезагружает страницу, а контакт использует хэштеги. Видимо без костылей все-таки не обойтись. Либо забить на осла младше 10й версии.
Цитата
html5 тебе уж точно не поможет )

Да ладно?
window.history.replaceState('Object', 'Title', '/another-url');

Это отлично работает в нормальных браузерах. Но не работает в 8 IE
killer8080
$(document).on('click', 'a', function(e) {
var href = this.href;

if(this.host != window.location.host ||
(
href.split('#')[0] == window.location.href.split('#')[0] && this.hash == '') ||
this.target != '' ||
!
window.history.pushState
)
return;

show_loading();
$.ajax(
href,
{
dataType: 'json',

success: function(data) {
hide_loading();
window.history.pushState(null, data.title, href);
document.title = data.title;
for (var k in data.html)
$('#' + k).html(data.html[k]);

},

error: function(xhr, status, error) {
hide_loading();
alert('Cannot load page: ' + href + '. Try again later.'+"\nstatus: "+status+"\nerror message: "+error);
}
}

);
e.preventDefault();
})
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.