- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 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?
Ua
与 Pa
:您可以进行特征检测:
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/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!