我想获取光标下的元素。当我使用document.querySelectorAll(":hover");
时,它在Chrome中运行良好,但在Firefox或IE中无效。
这可能是因为我在Google地图中的eventListener中使用它。我在这里如何使用它。
google.maps.event.addListener(polygon,"mouseout",function(){
elementHover = document.querySelectorAll( ":hover" );
alert(elementHover[elementHover.length-1].id);
});
在Chrome中,它为我提供了我用光标悬停的元素的ID,但我在IE或FF中什么都没有。
答案 0 :(得分:2)
你有没有理由使用mouseout而不是mouseover?似乎,取决于浏览器如何解决它(它是在你离开之前触发事件,还是刚刚离开之后,正在侦听事件的对象?),这可能会引起一些惊愕。有没有理由你不只是传递Event对象来获取你要离开的对象,而不是希望选择器会被激活?
根据Google的文档(https://developers.google.com/maps/documentation/javascript/events#EventArguments),您可以将事件对象传递到函数中:
google.maps.event.addListener(polygon,"mouseout",function(evt){
// get the target from the mouseout event, something like this:
elementHover = evt.target;
alert(elementHover[elementHover.length-1].id);
});
我目前无法对此进行测试,因此您可能不得不对其进行操作并阅读Google的文档以确保您正在查看的事件为您提供对其来自的对象的引用(您甚至可以使用“this”而不是evt.target,具体取决于传递给上下文的内容)。但是,:悬停仍然是一个半飞行的野兽,并且根据事件解决的顺序,你很可能只在Chrome中看到它,因为它会以不同于FF和IE的方式触发事件。
祝你好运!