我可以在imagemap区域元素上有一个onclick事件

时间:2015-04-28 13:59:25

标签: javascript jquery onclick area 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?

提前致谢!

7 个答案:

答案 0 :(得分:26)

注意:

  1. 属性href是强制性的,没有它,区域标签什么都不做!

  2. 要添加点击事件,您需要阻止默认广告。

  3. 您的代码应如下所示:

    $(".blue").on("click", function(e){
        e.preventDefault();
        /*
           your code here
        */
    });
    

    Live example here.

答案 1 :(得分:2)

根据您的评论,您只需要:

$("#image").click( function(){
 alert("clicked");
//your code here
});

演示:

http://codepen.io/tuga/pen/waBQBZ

答案 2 :(得分:1)

尝试:

<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个事件:

  

标签定义了图像映射内的区域(图像映射是具有可点击区域的图像)。

编辑:你的坐标有点怪异,因为它应该是每个顶点的耦合(所以现在,你的多边形是一条直线)

答案 3 :(得分:1)

它的形状是问题所在。您的代码设置的形状等于多边形,但在coordinates属性中只有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>

答案 4 :(得分:0)

我通过@TimorEranAV找到了这个问题 HTML map that displays text instead of linking to a 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>

此处标题标签提供了将悬停文本(提示)添加到图像映射的机会。

答案 5 :(得分:0)

对要监听的所有元素使用类,并选择使用行为属性:

<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

答案 6 :(得分:0)

这很简单:

<area class="blue" onclick="alert('test');" shape="poly" coords="2318,480,1510,1284" href="#">
或者对于任何其他代码:

<area class="blue" onclick="//JavaScript Code//" shape="poly" coords="2318,480,1510,1284" href="#">