JS получить window.location.hash и разделить его на массив и заменить определенный элемент массива - PullRequest
0 голосов
/ 17 февраля 2011

Эй, очень умные люди!

Я был ошеломлен этим и пытался в течение недели и не могу найти логическое решение.

Обычно, когда пользователь нажимает на два разных набора ссылок, я хочу добавить готовый URL.

Пока в моем коде это происходит

$(selecter a.1).live('click', function(){
   window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}

это будет выглядеть так: http://www.site.com/!#/username/page1/

Затем я вызываю функцию, чтобы обнаружить изменение хеша в URL-адресе и вернуть URL-адрес обратно в том виде, в котором он должен быть:

$(window).bind('hashchange', function(){
            hash = window.location.hash;
            //if( hash.indexOf( "/files/" ) == 6 )
                //newHash = window.location.hash.substring(3).replace(usr + '/files', '').replace('/', '.php');
            //else
                newHash = window.location.hash.substring(3).replace(usr + '/', '').replace('/', '.php');
            //newHash = window.location.hash.replace(dump, origHash, 'g');
            console.log(newHash);
            if (newHash) {
                $wrap.find("#main-content").fadeOut(200, function() {
                    $wrap.load(newHash + " #main-content", function() {
                        $content.fadeIn(function() {
                            $wrap.animate({
                                height: baseHeight + $content.height() + "px"
                            }, 500);
                        });
                    });
                });
            }
    });

проблем нет, проблема в том, что пользователь нажимает на второй набор ссылок, которые я хочу добавить немного по-другому к URL.

$(selecter a.2).live('click', function(){
       window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}

будет выглядеть так: http://www.site.com/!#/username/files/sub-page/

href ссылок выглядит следующим образом href = "files / sub-page.php"

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

У меня была идея, почему бы просто не заменить первоначальное значение href на window.location.hash, но потом понял, что хорошо ... что если пользователь перезагрузит страницу ?? Ну да! оригинальный хэш будет потерян! и URL зависит от обнаружения изменения хеша, чтобы он мог загрузить нужную страницу php.

Хорошо, тогда я подумал, что, может быть, я смогу как-нибудь вырезать все, кроме последнего слова в URL, и выполнить замену ('/', '.php'), чтобы добавить расширение ...

Хорошо, другая проблема в том, что в URL указывается файл / sub-page.php, который находится в каталоге files /.

Изначально у меня было все в одной директории, и я хотел вручную добавить файлы / к URL, но у меня были проблемы с той же логикой, поэтому я решил переместить их в папку с файлами / и выяснить, как обмануть JS в том, чтобы покинуть этот путь DIR там ...

Хорошо, это моя история ...

Могу ли я получить помощь?

1 Ответ

0 голосов
/ 17 февраля 2011

Вам повезло: https://github.com/allmarkedup/jQuery-URL-Parser

анализирует URL-адрес для вас и предоставляет вспомогательные методы для доступа к каждому биту URL-адреса!

...