js получить window.location.hash и разбить его на массив и заменить определенный элемент массива

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

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

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

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

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

URL-адрес будет выглядеть так: 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-адресе он указывает на files/sub-page.php, который находится в каталоге files/.

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

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

Могу ли я получить некоторую помощь?


person Eli    schedule 17.02.2011    source источник


Ответы (1)