Могу ли я иметь событие onclick на элементе области imagemap
Я хотел бы поместить событие onclick в элемент области. Вот моя настройка:
<img id="image" src="wheel.png" width="2795" height="2795" usemap="#Map" >
<map name="Map">
<area class="blue" onclick="myFunction()" shape="poly" coords="2318,480,1510,1284" href="#">
</map>
Я попробовал два разных способа иметь событие onclick. Во-первых, я пробовал это:
$(".blue").click( function(event){
alert('test');
});
Я также пробовал это:
function myFunction() {
alert('test');
}
Ни одна из вышеперечисленных работ не работает. Удерживают ли элементы области выше или поддерживают только href?
Спасибо заранее!
Ответы
Ответ 1
Обратите внимание:
-
Атрибут href является обязательным, без него тег области ничего не делает!
-
Чтобы добавить событие click, вам нужно заблокировать значение по умолчанию href.
Ваш код должен начинаться следующим образом:
$(".blue").on("click", function(e){
e.preventDefault();
/*
your code here
*/
});
Живой пример здесь.
Ответ 2
Основываясь на ваших комментариях, вам просто нужно:
$("#image").click( function(){
alert("clicked");
//your code here
});
Демо:
http://codepen.io/tuga/pen/waBQBZ
Ответ 3
Попробуйте:
<img src="wheel.png" width="2795" height="2795" alt="Weels" usemap="#map">
<map name="map">
<area shape="poly" coords="2318,480,1510,1284" alt="otherThing" href="anotherFile">
</map>
Вы не хотите добавлять события onClick
в область, документацию:
Тег определяет область внутри карты изображения (изображение-карта - это изображение с интерактивными областями).
Изменить: ваши координаты немного странны, так как они предполагаются парами каждой вершины (так что прямо сейчас, ваш многоугольник - это линия)
Ответ 4
Его форма, что проблема. Ваш код имеет форму, равную полигону, но имеет только 4 точки в атрибуте координат. Вместо этого вам нужно установить форму на прямоугольник.
Установите shape = "rect" следующим образом:
<img id="image" src="wheel.png" width="2795" height="2795" usemap="#Map" >
<map name="Map">
<area class="blue" onclick="myFunction()" shape="rect" coords="2318,480,1510,1284" href="#">
</map>
Ответ 5
Я нашел этот вопрос @TimorEranAV
HTML-карта, отображающая текст вместо ссылки на URL
и был отмечен как дубликат, но я думаю, что он ожидал это,
<html>
<head>
<title> Program - Image Map</title>
</head>
<body>
<img src="new.png" width="145" height="126" alt="Planets" usemap="#planetmap">
<map name="planetmap">
<area shape="rect" coords="0,0,82,126" href="sun.htm" alt="Sun" title = "Sun">
<area shape="rect" coords="82,0,100,126" href="mercur.htm" alt="Mercury" title = "Mercury">
</map>
</body>
</html>
Здесь тег title дает возможность добавить текст наведения (подсказка) к карте изображения.
Ответ 6
Используйте класс для всех элементов, которые вы хотите прослушать, и необязательно атрибут для поведения:
<map name="primary">
<area shape="circle" coords="75,75,75" class="popable" data-text="left circle text">
<area shape="circle" coords="275,75,75" class="popable" data-text="right circle text">
</map>
<img usemap="#primary" src="http://placehold.it/350x150" alt="350 x 150 pic">
<div class='popup hidden'></div>
Затем добавьте слушателей событий ко всем элементам класса:
const popable = document.querySelectorAll('.popable');
const popup = document.querySelector('.popup');
let lastClicked;
popable.forEach(elem => elem.addEventListener('click', togglePopup));
function togglePopup(e) {
popup.innerText = e.target.dataset.text;
// If clicking something else, first restore '.hidden' to popup so that toggle will remove it.
if (lastClicked !== e.target) {
popup.classList.add('hidden');
}
popup.classList.toggle('hidden');
lastClicked = e.target; // remember the target
}
Демо: https://codepen.io/weird_error/pen/xXPNOK
Ответ 7
Это простой:
<area class="blue" onclick="alert('test');" shape="poly" coords="2318,480,1510,1284" href="#">