Google maps 防止谷歌地图窃取键盘输入
在此文本字段中,您可以在contenteditable字段中键入“k”和“m”,它们将正确显示Google maps 防止谷歌地图窃取键盘输入,google-maps,Google Maps,在此文本字段中,您可以在contenteditable字段中键入“k”和“m”,它们将正确显示 但是,如果拖动背景,您将无法键入“m”或“k”。如何阻止谷歌地图抓取这些键盘键(“k”和“m”)?它必须是可编辑的Div吗?我在div中添加了一个输入,它不会覆盖k&m HTML: <div id="map"></div> <div id="keyIn" contenteditable="true"> <input type='text' />
但是,如果拖动背景,您将无法键入“m”或“k”。如何阻止谷歌地图抓取这些键盘键(“k”和“m”)?它必须是可编辑的Div吗?我在div中添加了一个输入,它不会覆盖k&m HTML:
<div id="map"></div>
<div id="keyIn" contenteditable="true">
<input type='text' />
</div>
$('#map').mouseup(function(){
$('#keyIn input').focus();
});
如果它必须是可编辑的div,请告诉我,我会仔细查看。
您无法防止失去可编辑div的焦点,否则全景无法工作,但您可以存储插入符号位置并在以后恢复它(一个简单的
焦点将使插入符号转到起始位置而不是原始位置)
不幸的是,在启用contentEditable的div中,获取当前选择的方法比仅读取/设置selectStart
值(由textareas使用)要复杂得多。最好的方法是使用外部库:
“k”和“m”键的问题仍然存在,但仅在Chrome JQuery方法中出现:
$("div [contenteditable=true]").keypress(function(e) {
e.stopImmediatePropagation();
});
找到解决方案后,还有一个更简单的解决方案
创建地图实例时使用keyboardShortcuts:false
属性
map = new google.maps.Map(document.getElementById('map'), {
keyboardShortcuts: false,
center: {lat: 37.7932339, lng: -122.4077706},
zoom: 15});
伙计,解决方案有进展吗?非常接近!它确实需要是可编辑的内容。(我正在使用的文本框需要根据用户输入增长。)我现在已经从我的应用程序中删除了地图功能,不需要解决方案。不过,还是有一个有趣的问题。@arby也许你可以在这个插件中使用Textarea
$("div [contenteditable=true]").keypress(function(e) {
e.stopImmediatePropagation();
});
map = new google.maps.Map(document.getElementById('map'), {
keyboardShortcuts: false,
center: {lat: 37.7932339, lng: -122.4077706},
zoom: 15});