Краткий ответ
Используйте <img>
- не кнопку, не якорь или не ввод - как остальные предполагают, что элемент является интерактивным, даже без JavaScript .
Длинный ответ
нажатие на изображение должно вызывать действие (с помощью javascript, но это не главное).
Я не согласен;что - это точка:)
Поскольку при нажатии активируются только JS-функции, ваше изображение должно быть доступно только в среде JS.
Таким образом, правильный путьвставить его с помощью JavaScript;в то время как HTML-документ должен быть семантически правильным, структура DOM не обязательно должна быть семантически правильной, поэтому используемый вами элемент становится неактуальным.
Неправильный путь
<div>
Click on the image to do something: <a href="javascript:wtv()" style="background-image:url(...)"> </a>
</div>
<div>
Click on the image to do something: <input type="image" onclick="wtv()" src="..." />
</div>
<div>
Click on the image to do something: <img onclick="wtv()" src="..." />
</div>
<div>
Click on the image to do something: <button onclick="wtv()"><img onclick="wtv()" src="..." /></button>
</div>
Этовсе неправильно, потому что пользователь, у которого нет JavaScript, видит эти элементы и не может их использовать.
Из всех них я бы сказал, что <img>
- меньшее зло, посколькупредложить интерактивный элемент.Самое большое зло при использовании <a>
в качестве якоря - это гиперссылка на другой документ, и вы никогда не должны когда-либо использовать протокол javascript:
.
Вы по-прежнему будете иметьта же проблема при внешнем добавлении обработчиков событий JavaScript:
/* external .js file */
document.getElementById("myButton").onclick = wtv;
<!-- HTML document -->
<div id="myButtonParent">
Click on the image to do something: <a id="myButton" href="#" style="background-image:url(...)"> </a>
</div>
Поскольку, опять же, у вас все еще есть (неработающая) гиперссылка, доступная для тех пользователей, у которых нет JavaScript.
Вместо
Вместо этого вставьте всю эту чертову штуку, используя сценарии DOM!Я собираюсь использовать <img>
с событием onclick
:
/* external .js file */
window.onload = function() {
var img = document.createElement("img");
img.src = "...";
img.onclick = wtv;
img.style.cursor = "pointer"; // so the mouse turns into a finger,
// like on a hyperlink
// Note: instead assign a class attribute and put this in an external CSS file...
document.getElementById("myButtonParent").appendChild(img);
}