добавить хэш с JavaScript к URL без прокрутки страницы? - PullRequest
9 голосов
/ 17 сентября 2009

добавить хеш к URL без прокрутки страницы? с JavaScript

  1. я открываю страницу
  2. прокручиваю вниз
  3. Я нажимаю на ссылку, которая добавляет хэш (возможно, со значением #test) (пример: http://www.example.com/#test)
  4. страница НЕ ДОЛЖНА прокручиваться вверх.

как это можно сделать?

примечание: просто проверяю, можно ли отключить движение, даже если есть какой-то тег с id = "test" пока возвращение ложное; отлично работает (для поддержки людей без javascript), а также во избежание присутствия идентификаторов в html, но это не проблема с такими вещами, как числа, такие как 1, 2, 3 (они не допускаются как идентификаторы в любом случае) 1016 *

все ответы великолепны, ничего нового или новаторского, и нет решений о том, как нарушить функциональность по умолчанию, но это подойдет. :) спасибо, что нашли время ответить.

Ответы [ 4 ]

17 голосов
/ 17 сентября 2009

Любой хеш, которого нет на странице, должен дать вам такое поведение.Например, эта ссылка указывает на несуществующий хеш на этой странице.(Ссылка протестирована с Chrome 2.0 и IE 6 (единственные браузеры, которые у меня есть на данный момент).

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

2 голосов
/ 17 сентября 2009

Любой из приведенных ниже примеров должен делать то, что вы хотите:

<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<a href="pleaseEnableJS.html"
    onclick="window.location.hash = '#test1';return false;">Test 1</a>
<a href="#test2">Test 2</a>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>

Если на вашей странице есть элемент с id="test1", или id="test2", или <a name="test1"></a>, или <a name="test2"></a>, он будет прокручиваться до этого элемента, в противном случае он должен работать так, как вы просили.

Если у вас есть код, который работает не так, как ожидалось, отредактируйте ваш вопрос и включите небольшой пример HTML и JavaScript, который не работает должным образом.

0 голосов
/ 28 августа 2012

Ответ Welbog работает нормально, но оставляет хэш #nonexistantanchor в адресной строке браузера.

Чтобы сделать это с помощью jQuery, вы можете добавить класс к привязке и использовать метод предотвращение по умолчанию , чтобы отключить как навигацию, так и изменение URL.

<a href='#' class="nodefault">Clickable</a>

<script>
$("a.nodefault").click(function(event) {
  event.preventDefault();
});
</script>

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

0 голосов
/ 17 сентября 2009

Каждый браузер будет интерпретировать значение хеш-функции как «перейти к этому DOM ID». Вы можете попробовать две вещи, о которых я могу подумать:

  1. Выполните действие, которое добавляет хеш для возврата false, таким образом отключая браузер для поиска его

  2. Добавьте тег DOM с идентификатором хэша, который вы добавляете, прямо там, где находится щелчок, чтобы остановить перемещение браузера. Но, вероятно, это не то, что вам нужно, поскольку вы добавляете хеш для чего-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...