事件目标/源元素在Chrome和Opera中无法100%工作

3

我正在尝试获取图像地图中HTML "area"元素的target/srcElement

以下是我目前的代码(请原谅数据URI):

<map name="dpad">
  <area id="dpad"shape="rect" alt="" title="" coords="1,14,12,24" onmousedown="move('l',false,event);" target="" />
  <area shape="rect" alt="" title="" coords="15,2,24,12" onmousedown="move('u');" target="" />
  <area shape="rect" alt="" title="" coords="27,15,38,24" onmousedown="move('r');" target="" />
  <area shape="rect" alt="" title="" coords="15,27,25,38" onmousedown="move('d');" target=""/>
</map>
<img width="40"height="40"src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAADDElEQVRYR+2ZvYoiQRSFW1EMVkEzI2XfydQH2GwGDTfczFRYNNBBUDFQUFN9ATXQwEEDRQ3UB3ADQajpr7Gkp8f+k2G6F2bg0jVVt+qcrp9zb5cBxeVfMpmMnE6nX+fz+U8kEvkRCoUsR7hcLorq+0/1/R2NRv8ej8ezS0h37uFwOBEMBkupVErk83lRKBQsDR986UNfd2gPeAcCgYRqpUwmI+bzuTgcDjcbj8cC09fhgy996PsApLsukmA2mxWLxeJGhnKz2dTMWI+vpwRXq5XodDqi3W5rRpk6ZhKynhLc7XZiMBiIVqsler2eZpSpo81zgqPRSDQaDdHtdkW/39eMMnXsR08JTqdTUSqVRK1WE/V6/Z1RVy6XBT6eLTEzNJlMLA0fzwjqT6teWvRlT5f4myASnU6nI4SgqwA7ef5UfV+MQu1giV/UfvR1gpGAE9wUNYA/EyevSu/kCdDrAwRfeTGnOHCKxWLPipqNnAjmxEtAnVqxWBTr9fpd3L03i/jg63Rc/OACJ7gxg1pWQlBn0+sNDZNia2wDeL/f3wgSNWazmWaUJVl88DX253/GBsPYBhc4wU2Jx+NauqR/ewCIEIgwOme2v6jfbDZiOByKarWqCTZWqVS0UEebVV/GBgMs/UvRB05w+0CQIM/ghCrA7AhCjihCDJahjjJ1tNkRBAMsMGWCYUqQqSYTIdgTTwGxIshbM3N6cnqStG23W1OSjA0GWGCCLbX1wwyyH8jlSJckoB1B9hszIEkZn7ThYzaLkiD9wAQbDnD5/wjylsvl8lOXmMPidonh8GWHhI3/qYdEDsbmZx+Qz9md4nsyw+HgBDuRGTDAMpUZxDCXy5kKNQTviaxRqFlKKdT6ZbUSasY2E2o4aULt+1BHQPZ1suD7dMvdZ7uimH24O8gHvb1Z+CbodKn1Sywvi+yenn12omEIrUyZSJuk+eLDXWbFvr36gKDvL484vb6+fpPy4rsLTN9eAesv0ck47C7R8fnSS3R+hlDToCeV6Il0iE9DK8Pn6vtEX6d6K/3eAH0oKaUOiMCyAAAAAElFTkSuQmCC"usemap="#dpad"/>

因此,对于dpad上的左箭头,我有一个要调用的函数onmousedownmove(dir,hold,e)

以下是该函数的开始部分:

function move(dir,hold,e){
    var p=document.getElementById('test');
    alert(e);
}

当我点击区域时,为什么会出现"undefined",这让我非常困惑。请有人详细解释一下如何获得目标元素?

我需要在HTML代码中添加'event'参数吗?我真的需要一个参数吗?

另外,这里有一些让我非常困惑的事情。

所以,我无法获取该元素的目标,但这个可以正常工作:

<div class="male1-d" id="test" data-sprite="male1" onclick="alert(event.target+' '+this.style.left+' '+this.style.top);"></div>

完成。已获得目标。现在为什么不能在函数中进行操作?

我忘记提到,我是指Opera移动版本9.50。

2个回答

3
在某些浏览器中,“event”是窗口的一个属性。但在其他浏览器中,您需要将“event”作为参数包含进去。因此,您的移动函数应该像下面这样:
 <html>
   <body>
     <button onmousedown='move(event)' id='btn' name='a button'>click</button>
   </body>
   <script>
     function move(e){
       var e=e||window.event;
       var target=e.target||e.srcElement;
       alert(target);
       alert(target.id);
       alert(target.name);
    }
  </script>
 </html>

我刚刚尝试了一下,还是不行。我在警告框中正确地返回事件,但是当我尝试警告目标时,在我的Opera浏览器上警告框中没有任何内容。我忘记提到在Opera上我指的是移动版本9.50。 - Ricky Yoder
移动函数在我的Opera版本11.61中可以工作。你可能错过了一些信息。顺便问一下,你是否使用了任何调试工具? - Zhou Lee
我刚刚做了一个简单的try...catch,但什么都没发生。 - Ricky Yoder
1
复制上面的示例并在您的Opera浏览器中运行。 - Zhou Lee
这在Opera和Chrome中都返回未定义。 - Ricky Yoder
请查看以下内容:https://dev59.com/El7Va4cB1Zd3GeqPNM6l - smilyface

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接