Подтвердить что ты не робот

Как отменить навигацию, когда пользователь нажимает ссылку (элемент <a>)?

Я пытаюсь загрузить некоторые вещи, используя AJAX, когда пользователь нажимает на ссылку, но я хочу, чтобы ссылка на самом деле шла куда-то, чтобы приложение все еще работало, когда javascript отключен. Есть ли способ сделать что-то с javascript и отменить навигацию при нажатии ссылки?

Какая лучшая практика? Может ли это быть сделано, или мне нужно заменить ссылку с помощью javascript или что?

4b9b3361

Ответ 1

Если у вас есть HTML:

<a href="no_javascript.html" id="mylink">Do Something</a>

Вы бы сделали что-то подобное с помощью jQuery:

$(document).ready(function() {
    $('#mylink').click(function() {
        doSomethingCool();
        return false; // cancel the event
    });
});

Все, что вам нужно сделать, это отменить событие click с помощью Javascript, чтобы предотвратить действие по умолчанию. Поэтому, когда кто-то нажимает на ссылку с включенным Javascript, вызывается doSomethingCool();, и событие click отменяется (таким образом, return false;) и не позволяет браузеру перейти на указанную страницу. Однако, если они отключены Javascript, это приведет их непосредственно к no_javascript.html.

Ответ 2

Ничего из этого не сработало для меня в браузере Google Chrome.

Вот что работает (используя jQuery):

$(document).ready(function() {
    $('#mylink').click(function(event) {
        doSomethingCool();
        event.preventDefault(); // cancel the event
    });
});

Ответ 3

почему jQuery?

HTML:

<a href="no_javascript.html" onclick="return doSmth()">Link</a>

... и код javascript:

function doSmth(){
  // your code here
  return false
}

Ответ 4

Я бы сделал:

а. для атрибута href javascript:void(); будет установлен

б. для события onclick, предоставит функцию для обработки события click, и эта функция вернет false.

например:

<script type="text/javascript">
   function myfunction()
   {
      //do something
      return false;
   }
   </script>

   <a href="javascript:void();" onclick="myfunction()">Link</a>

Ответ 5

<a href="http://www.google.com" class="ignore-click">Test</a>

с помощью jQuery:

<script>
    $(".ignore-click").click(function(){
        return false;
    })
</script>

с JavaScript

<script>
        for (var i = 0; i < document.getElementsByClassName("ignore-click").length; i++) {
            document.getElementsByClassName("ignore-click")[i].addEventListener('click', function (event) {
                event.preventDefault();
                return false;
            });
        }
</script>

Вы присваиваете классу .ignore-click столько элементов, которые вам нравятся, и щелчки по этим элементам будут проигнорированы

Ответ 6

для IE по крайней мере, просто поместите this.event.returnValue = false; в конец метода.

например:

function onClickFunction()
 {
  someMethod();
  this.event.returnValue = false;
 }

У меня был сложный метод, когда это делало трюк.

Ответ 7

Я использую document.location.replace для навигации, но когда я хочу отменить навигацию, return false (в той же функции, что и document.location.replace) не отменяет навигацию.

Ответ 8

Лучший способ должен быть таким.

<a href="javascript:undefined"></a>

Ответ 9

прост, используйте атрибут rel= "nofollow"

 <a href="signin.php" rel="nofollow">sign in</a>