Почему Вы не хотите к литералам строки префиксов с L? Это довольно просто - представляет в виде строки без L, строки ANSI (const char*
), строки с L являются строками широкого символа (const wchar_t*
). Существует TEXT()
макрос, который превращает строковый литерал в ANSI, или строка широкого символа в зависимости от текущего проекта установлена использовать Некод:
#ifdef UNICODE
#define TEXT(s) L ## s
#else
#define TEXT(s) s
#endif
существует также _T()
макрос, который эквивалентен TEXT()
.
Еще аккуратнее, вместо типичного href = "#"
или href = "javascript: void"
или href = "что угодно "
, я думаю, это имеет гораздо больший смысл:
var el = document.getElementById('foo');
el.onclick = showFoo;
function showFoo() {
alert('I am foo!');
return false;
}
<a href="no-javascript.html" title="Get some foo!" id="foo">Show me some foo</a>
Если Javascript дает сбой, есть некоторая обратная связь. Кроме того, устранено ошибочное поведение (переходы по страницам в случае href = "#"
, посещение той же страницы в случае href = ""
).
Ответ JQuery. Поскольку JavaScript был изобретен для разработки JQuery, я даю вам пример в JQuery, который делает это:
<div class="menu">
<a href="http://example.org">Example</a>
<a href="http://foobar.com">Foobar.com</a>
</div>
<script>
jQuery( 'div.menu a' )
.click(function() {
do_the_click( this.href );
return false;
});
// play the funky music white boy
function do_the_click( url )
{
alert( url );
}
</script>
С параметром onclick ...
<a href='http://www.google.com' onclick='myJavaScriptFunction();'>mylink</a>
Я бы обычно рекомендовал использовать element.attachEvent (IE) или element.addEventListener (другие браузеры) вместо установки события onclick напрямую, поскольку последнее заменит любые существующие обработчики событий для этого элемента.
attachEvent / addEventListening позволяет создавать несколько обработчиков событий.
В идеале я бы вообще избегал создания ссылок в вашем коде, так как ваш код будет нуждаться в перекомпиляции каждый раз, когда вы захотите внести изменения в «разметку» каждой из этих ссылок. Если бы вам пришлось это сделать, я бы не встраивал ваши «вызовы» javascript в ваш HTML, это вообще плохая практика, ваша разметка должна описывать ваш документ, а не то, что он делает, это работа вашего javascript.
Используйте подход, в котором у вас есть определенный идентификатор для каждого элемента (или класса, если его общая функциональность), а затем используйте Progressive Enhancement, чтобы добавить обработчик (-ы) событий, например:
[c# example only probably not the way you're writing out your js]
Response.Write("<a href=\"/link/for/javascriptDisabled/Browsers.aspx\" id=\"uxAncMyLink\">My Link</a>");
[Javascript]
document.getElementById('uxAncMyLink').onclick = function(e){
// do some stuff here
return false;
}
Таким образом, ваш код не сломается для пользователей с отключенным JS и у него будет четкое разделение проблем.
Надеюсь, что это будет полезно.
Я предпочитаю использовать метод onclick, а не href для гиперссылок javascript. И всегда используйте предупреждения, чтобы определить, какое у вас значение.
Это могло также использоваться в тегах ввода, например.
Используйте HTML-атрибут onclick
.
Обработчик событий
onclick
фиксирует событие щелчка мышью пользователя кнопка на элементе, к которому Применен атрибутonclick
. Эта действие обычно приводит к вызову метод сценария, такой как JavaScript function [...]