24.10.2013, 11:37
|
Аспирант
|
|
Регистрация: 14.06.2012
Сообщений: 41
|
|
Как поменять url в ie
Приветствую !
Посоветуйте скрипт, который меняет URL в адресной строке в HTML4 браузерах в частности IE8 и конечно без перезагрузки страницы
history.js не подходит по двум причинам: глючит и добавляет #.
Необходимо чтобы url менялся без добавления #, как на facebook ,youtube и тп
Заранее благодарен.
Последний раз редактировалось jobmsk, 24.10.2013 в 11:41.
|
|
24.10.2013, 12:43
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от jobmsk
|
history.js не подходит по двум причинам: глючит и добавляет #.
|
и в чем заключается глючисть? а от решетки в HTML4 браузерах, никуда не денетесь.
Сообщение от jobmsk
|
Необходимо чтобы url менялся без добавления #
|
для HTML4 браузеров это не возможно!
Сообщение от jobmsk
|
как на facebook ,youtube и тп
|
правда что ли? они нашли способ как менять юрл в древних браузерах? Не поверю, вы скорее всего просто что-то путаете.
А для новых браузеров используйте History-API
|
|
24.10.2013, 12:52
|
Аспирант
|
|
Регистрация: 14.06.2012
Сообщений: 41
|
|
Цитата:
|
и в чем заключается глючисть? а от решетки в HTML4 браузерах, никуда не денетесь.
|
если приходит линк например с www.xxx.ru?ie=md
то при попытке заменить ?ie=md на ?ie=md1
получаешь ?ie=md#?ie=md1
по такому линку юзер ничегог не откроет
www.xxx.ru?ie=md#?ie=md1
правда что ли? они нашли способ как менять юрл в древних браузерах?
Цитата:
|
Не поверю, вы скорее всего просто что-то путаете.
|
а зачем верить, нужно проверить зайдите в ie на них
Последний раз редактировалось jobmsk, 24.10.2013 в 12:55.
|
|
24.10.2013, 12:58
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от jobmsk
|
то при попытке заменить ?ie=md на ?ie=md1
получаешь ?ie=md#?ie=md1
|
это не глючисть а фича, так как удаление из ЮРЛа что либо до решетки, приведет в HTML4 браузерах к перезагрузке страницы. Поэтому что бы страница не перезагружалась, основной ЮРЛ не модифицируется.
Сообщение от jobmsk
|
а зачем верить, нужно проверить зайдите в ie на них
|
Зашел из ИЕ9, вижу страницы перезагружаются во всю. Внимательнее смотрите, просто ИЕ иногда так быстро загружает страницы что кажется что вовсе и не было перезагружено ничего. А в реальности все перезагружается.
|
|
24.10.2013, 14:33
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от jobmsk
|
Необходимо чтобы url менялся без добавления #, как на facebook ,youtube и тп
|
Есть категория людей, которая считает что такие крутые сайты умеют творить магию и обладают особой силой. А простые сайты об этом как бы не догадываются и не используют ничего подобного.
__________________
В личку только с интересными предложениями
|
|
24.10.2013, 15:13
|
Аспирант
|
|
Регистрация: 14.06.2012
Сообщений: 41
|
|
Сообщение от devote
|
это не глючисть а фича, так как удаление из ЮРЛа что либо до решетки, приведет в HTML4 браузерах к перезагрузке страницы. Поэтому что бы страница не перезагружалась, основной ЮРЛ не модифицируется.
|
согласен ,что фича..придется с ней смириться..
Цитата:
|
Зашел из ИЕ9, вижу страницы перезагружаются во всю. Внимательнее смотрите, просто ИЕ иногда так быстро загружает страницы что кажется что вовсе и не было перезагружено ничего. А в реальности все перезагружается.
|
да, действительно....возможно не заметил ОООчень быструю перезагрузку
когда iE запретят?
|
|
24.10.2013, 15:16
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от jobmsk
|
придется с ней смириться..
|
есть обходные пути, но придется под них реализовывать свой сайт.
Сообщение от jobmsk
|
когда iE запретят?
|
когда умрет интернет наверное))))
|
|
24.10.2013, 15:57
|
Аспирант
|
|
Регистрация: 14.06.2012
Сообщений: 41
|
|
Сообщение от devote
|
есть обходные пути, но придется под них реализовывать свой сайт.
|
какие пути имеете ввиду?
|
|
24.10.2013, 16:04
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от jobmsk
|
какие пути имеете ввиду?
|
как убрать часть до решетки: ?ie=md. Но решетку в любом случае не уберете.
Библиотека которая написана мною. Имеет некоторые возможности для реализации ссылок хотя бы вида: http://example.com/#?ie=md1, вместо http://example.com/?ie=md#?ie=md1
Для этого вам придется подшаманить на сервере с настройками HTTP-сервера. И на клиенте либо передать аргумент redirect=true или вызвать метод history.redirect();
К сожалению сайт на котором я демонстрировал это, на данный момент не работает. Там можно было посмотреть реализацию.
|
|
24.10.2013, 16:24
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
примерно так положить это в index.php:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="history.js?redirect=true"></script>
<script type="text/javascript">
// метод загружает данные и куда то их рассовывает
function loadContent(url, callback) {
// вызвать аякс
alert('Нужно загрузить контент по ссылке: ' + url);
// вызвать callback после удачной загрузки контента
callback && callback();
}
(function(eventInfo) {
// вешаем события на все ссылки в нашем документе
document[eventInfo[0]](eventInfo[1] + 'click', function(event) {
event = event || window.event;
var target = event.target || event.srcElement;
// ищем все ссылки с классом 'ajax'
if (target && target.nodeName === 'A' &&
(' ' + target.className + ' ').indexOf('ajax') >= 0)
{
// тут можете вызвать подгрузку данных и т.п.
loadContent(target.href, function() {
// заносим ссылку в историю
history.pushState(null, null, target.href);
});
// не даем выполнить действие по умолчанию
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
}, false);
// вешаем событие на popstate которое срабатывает при нажатии back/forward в браузере
window[eventInfo[0]](eventInfo[1] + 'popstate', function(event) {
// получаем нормальный объект Location
/*
* заметьте, это единственная разница при работе с данной библиотекой,
* так как объект document.location нельзя перезагрузить, поэтому
* библиотека history возвращает сформированный "location" объект внутри
* объекта window.history, поэтому получаем его из "history.location".
* Для браузеров поддерживающих "history.pushState" получаем
* сформированный объект "location" с обычного "document.location".
*/
var returnLocation = history.location || document.location;
// тут можете вызвать подгрузку данных и т.п.
loadContent(returnLocation.href)
}, false);
})(window.addEventListener ? ['addEventListener', ''] : ['attachEvent', 'on']);
</script>
</head>
<body>
<a class="ajax" href="?ie=md1">Md1</a>
<a class="ajax" href="?ie=md2">Md2</a>
</body>
</html>
а на сервере если используете apache, в .htaccess нужно написать такие строки:
# Наш сайт будет работать с кодировкой UTF-8 тем самым серверу мы укажем о том что бы он самостоятельно
# добавлял в заголовок Content-Type подстроку charset=utf-8 в тех случаях когда ее нет
AddDefaultCharset UTF-8
# Укажем серверу информацию о том какой файл является по умолчанию для ссылки вида http://somesite.com/
DirectoryIndex index.php
# Включаем модуль преобразований ссылок
RewriteEngine On
# Условие если в ссылке нет прямого доступа к файлу
RewriteCond %{REQUEST_FILENAME} !-f
# то передаем управление основному обработчику, в нашем случае это index.php
RewriteRule ^(.*) index.php [QSA,L]
|
|
|
|