В чем разница между разными методами помещения кода JavaScript в <a>?

Я видел следующие методы помещения кода 9X_javascript-library JavaScript в тег :

function DoSomething() { ... return false; }
  1. link
  2. link
  3. link
  4. link

Я понимаю идею попытки 9X_span разместить действительный URL вместо кода 9X_html-tag JavaScript, на всякий случай, если у пользователя 9X_href не включен JavaScript. Но для целей этого 9X_vanilla-javascript обсуждения я должен предположить, что JavaScript 9X_div-layouts включен (они не могут войти без него).

Мне 9X_javascript-execution лично нравится вариант 2, поскольку он позволяет 9X_html-tag увидеть, что будет выполняться - особенно 9X_div полезно при отладке, когда в функцию передаются 9X_html5 параметры. Я использовал его довольно часто 9X_vanillajs и не обнаружил проблем с браузером.

Я читал, что 9X_html-tag люди рекомендуют 4, потому что это дает 9X_.js пользователю реальную ссылку для перехода, но 9X_webpage на самом деле # не "настоящий". Он 9X_javascript-library никуда не денется.

Есть ли тот, который не 9X_html-tag поддерживается или действительно плохой, если 9X_href вы знаете, что у пользователя включен JavaScript?

Связанный 9X_vanillajs вопрос: Href for JavaScript links: “#” or “javascript:void(0)”?.

88
0
7
Общее количество ответов: 7

Ответ #1

Ответ на вопрос: В чем разница между разными методами помещения кода JavaScript в <a>?

Мне очень нравится Matt Kruse's Javascript Best Practices article. В нем он заявляет, что 9X_javascript-library использование раздела href для выполнения кода 9X_javascript JavaScript - плохая идея. Несмотря на то, что 9X_divs вы заявили, что у ваших пользователей должен 9X_js быть включен JavaScript, нет причин, по 9X_vanillajs которым у вас не может быть простой HTML-страницы, на 9X_javascript которую могут указывать все ваши ссылки 9X_.js JavaScript для своего раздела href в случае, если 9X_javascript кто-то отключит JavaScript после вход в 9X_vanillajs систему. Я настоятельно рекомендую вам разрешить 9X_ecmascript этот резервный механизм. Что-то вроде этого 9X_div-layouts будет соответствовать «передовым методам» и 9X_href достигнет вашей цели:

go

69
3

  • Вы можете переопределить это значение с помощью атрибута title, например <a href="javascript_required.htm ...

Ответ #2

Ответ на вопрос: В чем разница между разными методами помещения кода JavaScript в <a>?

Зачем это делать, если можно использовать 9X_divs addEventListener / attachEvent? Если нет href -эквивалента, не используйте 9X_html , используйте

10

  • Потому что это выглядит некрасиво. Вы можете добавить значок рядом со ссылкой. Их сложно форматировать одинаково в разных браузерах. ...

Ответ #3

Ответ на вопрос: В чем разница между разными методами помещения кода JavaScript в <a>?

Вы забыли другой способ:

5: Link

С кодом JavaScript:

document.getElementById('myLink').onclick = function() {
    // Do stuff.
};

Я 9X_vanillajs не могу комментировать, какой из вариантов 9X_span имеет лучшую поддержку или какой семантически 9X_vanillajs лучший, но я просто скажу, что мне больше 9X_html5 нравится этот стиль, потому что он отделяет 9X_div-layouts ваш контент от вашего кода JavaScript. Он 9X_.js хранит весь код JavaScript вместе, что намного 9X_vanillajs проще поддерживать (особенно если вы применяете 9X_vanilla-javascript это ко многим ссылкам), и вы даже можете 9X_div поместить его во внешний файл, который затем 9X_divs можно упаковать для уменьшения размера файла 9X_html и кэшировать в клиентских браузерах.

5
3

  • Если у вас есть 20 или 30 разных сс ...

Ответ #4

Ответ на вопрос: В чем разница между разными методами помещения кода JavaScript в <a>?

link

Я сделаю это или:

link
(document.getElementById("Link")).onclick = function() {
    DoSomething();
    return false;
};

В зависимости от ситуации. Для 9X_vanilla-javascript более крупных приложений лучше всего подходит 9X_javascript-library второй, потому что он объединяет ваш код 9X_div-layouts события.

3
0

Ответ #5

Ответ на вопрос: В чем разница между разными методами помещения кода JavaScript в <a>?

Метод № 2 имеет синтаксическую ошибку в 9X_.js FF3 и IE7. Я предпочитаю методы №1 и №3, потому 9X_div-layouts что №4 загрязняет URI символом «#», хотя 9X_javascript и требует меньше ввода ... Очевидно, как 9X_webpage отмечается в других ответах, лучшим решением 9X_vanilla-javascript является отделение HTML от обработки событий.

1
1

  • @Diodeus, я считаю, что Пьер имел в виду нумерованный список ** в вопросе **, который на самом дел ...

Ответ #6

Ответ на вопрос: В чем разница между разными методами помещения кода JavaScript в <a>?

Я заметил одно различие между этим:

Click me

и это:

Click me

в 9X_html5 том случае, если в любом случае у вас есть:


тогда 9X_span для первого примера act2 будет выполняться перед 9X_webpage act1, а во втором примере все будет наоборот.

1
0

Ответ #7

Ответ на вопрос: В чем разница между разными методами помещения кода JavaScript в <a>?

Только современные браузеры














Кроссбраузерность















Вы можете запустить это до того, как документ 9X_ecmascript будет готов, нажатие кнопок будет работать, потому 9X_ecmascript что мы прикрепляем событие к документу.

Источники:

1
0