Прекратите прокрутку до идентификатора при открытии jQuery Modal через URL - PullRequest
0 голосов
/ 05 мая 2010

Мне нужно, чтобы я мог открывать модал jQuery UI с идентификатором на странице, когда идентификатор модала передается в URL страницы. Например:

http://mysite.com/visit.html#directions

# directions - это идентификатор DIV в самом низу страницы, прямо перед закрывающим элементом BODY. Он создается как диалоговое окно jQuery UI при загрузке страницы, затем я запускаю функцию, чтобы проверить текущий URL-адрес для идентификатора модального устройства. Если URL-адрес содержит идентификатор модального окна, модальное окно открывается.

Вот как выглядит моя функция автоматического открытия:

function autoOpenModal() {
    if ( document.location.href.indexOf('#') ) {
        var uriParts = document.location.href.split('#');
        var hashID = '#' + uriParts[1];
        if ( $(hashID) && $(hashID).hasClass('dialog')) {
            $(hashID).dialog('open');
        }
    }
}

Проблема, с которой я столкнулся, заключается в том, что браузер автоматически прокручивает страницу до идентификатора в самом низу страницы до того, как модальное окно открывается. Поэтому, когда пользователь закрывает модальный режим, он находится внизу страницы (что мне кажется «сломанным»).

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

Ответы [ 2 ]

2 голосов
/ 13 октября 2010

Если это ваш URL "http://mysite.com/visit.html#directions", веб-браузер всегда должен переходить к" указаниям ", так как это то, о чем его просят. Вместо использования" # "вы можете использовать строку запроса.

http://en.wikipedia.org/wiki/Query_string

0 голосов
/ 05 мая 2010

Попробуйте вернуть false из функции autoOpenModal():

function autoOpenModal() {
    if ( document.location.href.indexOf('#') ) {
        var uriParts = document.location.href.split('#');
        var hashID = '#' + uriParts[1];
        if ( $(hashID) && $(hashID).hasClass('dialog')) {
            $(hashID).dialog('open');
        }
    }
    return false;
}
...