Изменение хэша URL с помощью javascript - после установки возвращается к пустому - PullRequest
3 голосов
/ 11 сентября 2011

Я написал класс для создания набора вкладок из контента в серии вложенных DIV (сайт, над которым я сейчас работаю, очень неохотно устанавливает JQuery, поэтому я не могу использовать JQuery UI).Я пытаюсь добавить изящную небольшую функцию, чтобы, когда пользователь обновляет страницу, эта же вкладка оставалась открытой (это также позволило бы мне отправить пользователя на соответствующую вкладку на странице с другой страницы и т. Д.)

Мой код работает нормально, за исключением случаев, когда я пытаюсь изменить хэш URL при открытии новой вкладки.В данный момент хэш ненадолго меняется, а затем, по-видимому, возвращается к пустому ('').Мне приходится работать с Prototype и Scriptaculous, поэтому мне было интересно, знает ли кто-нибудь, есть ли в этих библиотеках событие автоматического изменения хеша, которое я должен переопределить, или что-то подобное?Кто-нибудь знает, что может быть причиной проблемы?Я действительно озадачен этим!Соответствующие части моего кода ниже ...

ff_Tabs.prototype.getSelectedTabFromHash    =   function () {
        // is there a has set?
        if (this.Selected < 0) {
            for (iTab in this.Tabs) {
                if (typeof this.Tabs [iTab] != 'function') {    
                    if ('#' + this.HashNamespace + '-' + iTab == window.location.hash) {
                        // hash refers to tab
                        return iTab;    
                    }   
                }   
            }   
        }

        // no, return to default
        if (this.Selected >= 0) {
            return this.Selected;   
        }
        else {
            return 0;       
        }
    }

ff_Tabs.prototype.changeSelectedHash    =   function (iTabId) {
    // change the has to something selected
    window.location.hash                =   '#' + this.HashNamespace + '-' + iTabId;
}

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Это снова Dom (афиша с вопросом) - я использовал неправильный адрес электронной почты при первой регистрации. Я нашел проблему, ответ пришел ко мне и был очевиден.

Я совершил глупую ошибку, не указав HREF якорей, когда указал их события onClick.Таким образом, мой JavaScript-объект изменил URL, затем, как только скрипт завершился, браузер снова изменил его на HREF ссылки (который по умолчанию был установлен на «#»

Мои извинения, этобыло бы невозможно определить из первого поста, так как я не указал метод, который применяет события onClick к якорям. Ответ пришел ко мне только тогда, когда я настраивал другой набор вкладок только сейчас!

Само собой разумеется, что код теперь работает нормально, и если кому-то нужен быстрый, чистый маленький скрипт Tabs, свяжитесь с нами!

0 голосов
/ 11 сентября 2011

Как насчет того, чтобы вместо того, чтобы хранить текущую открытую вкладку в хеше URL, вы сохраняете ее внутри куки?Таким образом, текущая открытая вкладка будет знать, что вы делаете с URL ...

...