В чем разница между href = "", href = "#" и href = "javascript: void (0)"? - PullRequest
11 голосов
/ 06 августа 2011

В чем разница между href="", href="#" и href="javascript:void(0)"?
Как они используются и когда одно лучше другого?

Ответы [ 5 ]

15 голосов
/ 06 августа 2011

href="" перезагрузит текущую страницу

href="#" прокрутит текущую страницу вверх

`href =" javascript: void (0) "ничего не сделает.

Вы можете получить тот же эффект, что и javascript: void(0), вернув false из обработчика события щелчка якоря, используя любой из двух других методов.

Я предпочитаю использовать <a id="the-link" href="#">Link</a> изатем привязать обработчик событий к прослушивателю кликов где-нибудь в моем javascript, например:

document.getElementById('the-link').onclick = function(){ 
    // Do stuff
    return false;
};

Таким образом, поскольку вы используете #, даже если пользователь отключил JavaScript, страница не будет перезагружатьсяэто просто прокрутит вверх), и я думаю, что это выглядит намного чище, чем javascript: void(0)

4 голосов
/ 06 августа 2011

'#' вернет пользователя в начало страницы, поэтому я обычно использую void(0).

Три причины. Поощрение использования # amoungst команды разработчиков неизбежно приводит к тому, что некоторые используют возвращаемое значение функции, называемой так:

function doSomething() {
    //some code
    return false;
}

Но тогда они забывают использовать return doSomething() в onclick и просто используют doSomething().

Вторая причина, по которой следует избегать #, заключается в том, что последнее возвращение false не будет выполняться, если вызванная функция выдает ошибку. Следовательно, разработчики также должны помнить, чтобы обрабатывать любую ошибку соответствующим образом в вызываемой функции.

Третья причина заключается в том, что в некоторых случаях свойство события onclick назначается динамически. Я предпочитаю иметь возможность вызывать функцию или назначать ее динамически, без необходимости кодировать функцию специально для того или иного метода вложения. Следовательно, мой onclick (или что-нибудь еще) в HTML-разметке выглядит так:

onclick="someFunc.call(this)"

OR

onclick="someFunc.apply(this, arguments)"

Использование javascript:void(0) позволяет избежать всех вышеперечисленных головных болей, и я не нашел примеров недостатков.

Так что если вы одинокий разработчик, вы можете сделать свой собственный выбор, но если вы работаете в команде, вы должны указать:

use href="#", убедитесь, что onclick всегда содержит return false; в конце, что любая вызываемая функция не выдает ошибку, и если вы динамически присоединяете функцию к свойству onclick, убедитесь, что, а также не выбрасываете ошибка возвращает ложь.

OR

use href="javascript:void(0)"

Со вторым легче общаться.

0 голосов
/ 16 августа 2013

Это две разные ссылки:
1. href = "" перенаправит пользователя на корневую страницу. Больше похоже на страницу по умолчанию или страницу индекса.
2. href = "#" Не будет перенаправлять пользователя, но также не будет ничего делать, кроме изменения URL-адреса. Просто чтобы сделать кнопку, похожую на URL, я имею в виду кнопку, похожую на привязку. Но нет, куда идти с этим. 3. Если вы хотите сделать какую-то работу с JavaScript. Вы можете использовать

<button onclick="dothis()">Click me!</button>  
function dothis() {
// do what ever you want to do here
} 

Третий тип не будет изменять URL, не будет перенаправлять!

0 голосов
/ 06 августа 2011

Если вы используете href="", некоторые браузеры могут подумать, что тег привязки - это не ссылка, а привязка.Тогда бы не получилось поведение и события ссылки.Даже если он работает в браузерах, которые вы можете протестировать, безопаснее не использовать пустое значение.

Часто используется закладка без имени href="#".Это то же самое, что и ссылка на любую закладку, например href="#contact", за исключением того, что закладка без имени ведет в начало страницы.Это работает как достойный запасной вариант, если Javascript не работает, так как он ведет вас к вершине, а не перемещается куда-то еще.Иногда вы видите, что разработчик забыл прекратить действие ссылки по умолчанию, и страница переходит наверх, когда скрипт делает то, что делает.

Использование href="javascript:void(0)" - это способ создания URL, который невообще никуда не ведет, поэтому ссылка не пойдет.Он работает хорошо, но, поскольку URL-адрес отображается в поле состояния, когда вы указываете на ссылку в большинстве браузеров, он выглядит не очень красиво.

0 голосов
/ 06 августа 2011

href = "" будет ссылаться на ту же страницу, на которой вы сейчас находитесь, эффективно обновляя страницу.href = "#" не обновит страницу, но использование # заставит экран переместиться в верхнюю часть страницы (это браузер, который эффективно ищет якорь без имени,).javascript: void (0) вообще не допустит, чтобы что-либо произошло со ссылкой.

Я использую #, когда хочу добавить ссылки, и я не уверен, куда они идут, например, при создании макета страницы.Я обычно использую форму action = "", если я хочу опубликовать форму на той же странице, но я никогда лично не использовал href = "" или javascript: void (0).

...