gpt4 book ai didi

javascript - 在谷歌地图 v3 多边形上检测鼠标事件的 shiftKey

转载 作者:行者123 更新时间:2023-12-01 10:44:03 25 4
gpt4 key购买 nike

在使用 google maps V3(.16) javascript API 时,有没有办法检测多边形上的 shift-mouseclick? https://developers.google.com/maps/documentation/javascript/reference#MouseEvent

我确实收到了鼠标事件,并且我可以看到原始事件被包装在一个 google 事件类中,这正是我们所需要的(访问事件。Ua.shiftKey 属性)。

然而我发现上个月,google 可能已经更新了他们的 api,现在属性被重命名为 event.Pa.shiftKey。

引用见http://i.stack.imgur.com/80npD.png获取 webinspector 中事件结构的屏幕截图。有没有办法检测在使用事件点击谷歌地图多边形期间是否按下了 shift 键,而不必依赖 google-not-updating-their-api?我错过了什么?

谢谢!

最佳答案

使用未记录的属性几乎总是一个坏主意。如果您可以可能避免它,请避免它。在这种情况下,API 可能正在使用 Closure Compiler 进行压缩,因此下次更新时,它也可能不再是 Pa

Is there any way to detect whether the shift key is pressed during a click on a google maps polygon using the event, and without having to rely on google-not-updating-their-api?

如果只是 UaPa:

您可以进行特征检测:

var shiftKey = (event.Ua || event.Pa).shiftKey;

使用 JavaScript 的 curiously powerful || operator引用 Ua 属性的值,如果有并且它是真的,否则引用 Pa 属性的值。

这假设当他们将其从 Ua 更改为 Pa 时,他们不会将 Ua 用于其他用途。如果有机会,这个更彻底的版本会做到这一点:

var shiftKey = ((event.Ua && 'shiftKey' in event.Ua) ? event.Ua : event.Pa).shiftKey;

它专门检查具有 shiftKey 属性的 Ua 对象,如果找不到则回退到 Pa

如果可以的话

...你可以搜索一下:

var shiftKey;
if (Object.keys(event).some(function(key) {
if (event[key] && 'shiftKey' in event[key]) {
shiftKey = event[key].shiftKey;
return true;
}
return false;
})) {
// We found it, `shiftKey` has the value
} else {
// We didn't find it
}

旁注:Object.keys 是所有现代浏览器上的 ES5 功能。如果需要支持 IE8 等旧版浏览器,可以使用 polyfill。

关于javascript - 在谷歌地图 v3 多边形上检测鼠标事件的 shiftKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28196026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com