Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.10.2013, 11:37
Аспирант
Отправить личное сообщение для jobmsk Посмотреть профиль Найти все сообщения от jobmsk
 
Регистрация: 14.06.2012
Сообщений: 41

Как поменять url в ie
Приветствую !

Посоветуйте скрипт, который меняет URL в адресной строке в HTML4 браузерах в частности IE8 и конечно без перезагрузки страницы

history.js не подходит по двум причинам: глючит и добавляет #.
Необходимо чтобы url менялся без добавления #, как на facebook ,youtube и тп

Заранее благодарен.

Последний раз редактировалось jobmsk, 24.10.2013 в 11:41.
Ответить с цитированием
  #2 (permalink)  
Старый 24.10.2013, 12:43
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от jobmsk
history.js не подходит по двум причинам: глючит и добавляет #.
и в чем заключается глючисть? а от решетки в HTML4 браузерах, никуда не денетесь.
Сообщение от jobmsk
Необходимо чтобы url менялся без добавления #
для HTML4 браузеров это не возможно!
Сообщение от jobmsk
как на facebook ,youtube и тп
правда что ли? они нашли способ как менять юрл в древних браузерах? Не поверю, вы скорее всего просто что-то путаете.

А для новых браузеров используйте History-API
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 24.10.2013, 12:52
Аспирант
Отправить личное сообщение для jobmsk Посмотреть профиль Найти все сообщения от jobmsk
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 24.10.2013, 12:58
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от jobmsk
то при попытке заменить ?ie=md на ?ie=md1
получаешь ?ie=md#?ie=md1
это не глючисть а фича, так как удаление из ЮРЛа что либо до решетки, приведет в HTML4 браузерах к перезагрузке страницы. Поэтому что бы страница не перезагружалась, основной ЮРЛ не модифицируется.

Сообщение от jobmsk
а зачем верить, нужно проверить зайдите в ie на них
Зашел из ИЕ9, вижу страницы перезагружаются во всю. Внимательнее смотрите, просто ИЕ иногда так быстро загружает страницы что кажется что вовсе и не было перезагружено ничего. А в реальности все перезагружается.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 24.10.2013, 14:33
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от jobmsk
Необходимо чтобы url менялся без добавления #, как на facebook ,youtube и тп
Есть категория людей, которая считает что такие крутые сайты умеют творить магию и обладают особой силой. А простые сайты об этом как бы не догадываются и не используют ничего подобного.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 24.10.2013, 15:13
Аспирант
Отправить личное сообщение для jobmsk Посмотреть профиль Найти все сообщения от jobmsk
 
Регистрация: 14.06.2012
Сообщений: 41

Сообщение от devote Посмотреть сообщение
это не глючисть а фича, так как удаление из ЮРЛа что либо до решетки, приведет в HTML4 браузерах к перезагрузке страницы. Поэтому что бы страница не перезагружалась, основной ЮРЛ не модифицируется.
согласен ,что фича..придется с ней смириться..


Цитата:
Зашел из ИЕ9, вижу страницы перезагружаются во всю. Внимательнее смотрите, просто ИЕ иногда так быстро загружает страницы что кажется что вовсе и не было перезагружено ничего. А в реальности все перезагружается.
да, действительно....возможно не заметил ОООчень быструю перезагрузку
когда iE запретят?
Ответить с цитированием
  #7 (permalink)  
Старый 24.10.2013, 15:16
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от jobmsk
придется с ней смириться..
есть обходные пути, но придется под них реализовывать свой сайт.

Сообщение от jobmsk
когда iE запретят?
когда умрет интернет наверное))))
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 24.10.2013, 15:57
Аспирант
Отправить личное сообщение для jobmsk Посмотреть профиль Найти все сообщения от jobmsk
 
Регистрация: 14.06.2012
Сообщений: 41

Сообщение от devote Посмотреть сообщение
есть обходные пути, но придется под них реализовывать свой сайт.
какие пути имеете ввиду?
Ответить с цитированием
  #9 (permalink)  
Старый 24.10.2013, 16:04
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 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();

К сожалению сайт на котором я демонстрировал это, на данный момент не работает. Там можно было посмотреть реализацию.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #10 (permalink)  
Старый 24.10.2013, 16:24
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 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]
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить URL, в случае совпадения с условиями - создать div? Intruder Общие вопросы Javascript 3 27.05.2012 02:10
JQuery как получить url? Memfis jQuery 8 29.07.2011 01:39
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
Как поменять свойство плагина? lyapharov jQuery 2 16.04.2011 19:39
Как определить директорию (URL) в которой лежит скрипт? rkwdv Общие вопросы Javascript 4 09.02.2010 15:49