У меня есть галерея фотографий с кнопками «Далее» и «Предыдущий». Если один из моих методов javascript по той или иной причине не работает, при нажатии одной из кнопок он добавит хэш к URL-адресу, например www.google.com# . Я знаю, что хешу можно присвоить идентификатор div для перехода к этой части страницы, но когда он пуст, он несколько раз прыгает по моей странице, и я не уверен, на что он нацелен. Я думал о попытке удалить хэш из URL-адреса, но тогда мне пришлось бы обеспечивать это при каждом действии, и это кажется плохой практикой. Я бы предпочел, чтобы хеш просто не влиял на действия на странице.
Пустой хэш URL-адреса заставляет страницу переходить на события js
comment
«Пустой хэш» обычно переводит окно браузера в начало страницы.
- person putvande   schedule 01.11.2013
comment
Прочитайте это: stackoverflow.com/questions/1357118 / звучит так, будто вам нужно предотвратить событие по умолчанию.
- person Nick R   schedule 01.11.2013
comment
Я знаю о предотвращении значения по умолчанию, но если хэш в теге привязки href неправильный, его легче изменить, чем прикрепить обработчики для предотвращения значения по умолчанию для всего. Моя самая большая проблема - сломанный javascript, поэтому я не хочу использовать js для ее решения, если могу этого избежать.
- person JewrassicPark   schedule 01.11.2013
Ответы (3)
Не используйте href="#"
, это неправильно.
Вместо этого используйте href="javascript:;"
или его вариант (лично я использую javascript:void(null);
)
Это явно указывает, что ссылка не ведет в другое место, а обрабатывается JavaScript.
person
Niet the Dark Absol
schedule
01.11.2013
Это то, о чем я беспокоился. Я знаю, что в какой-то момент все было установлено на href='/', а теперь большинство из них href='#', но изменить его, вероятно, было бы самым простым решением.
- person JewrassicPark; 01.11.2013
Я не понимаю, как
href="#"
будет неуместным, это просто ссылка на закладку. Использование href="javascript:;"
не сообщает браузеру, что сценарий обрабатывает действие, он запрашивает у сценария в href
место для перехода. Поскольку скрипт имеет значение undefined
, браузер не может никуда перемещаться.
- person Guffa; 01.11.2013
Я предполагаю, что кнопка Next And Prev имеет разметку, похожую на <a href="#" ...</a>
. В этом случае вы можете добавить прослушиватель событий к этим ссылкам с помощью jquery.
$('#prev, #next').on({
'click': function(e) {
e.preventDefault();
}
})
и избегайте изменения местоположения браузером. Или в чистом javascript:
document.querySelectorAll('#prev, #next').addEventListener('click', function(e) {
e.preventDefault();
},false)
//Note: this code is not cross-browser
person
Glen Swift
schedule
01.11.2013
Не используйте тег привязки, если вы не хотите выполнять функцию навигации. Используйте 1_
person
Adam
schedule
01.11.2013