回答
最后我找到了可以使用的bing的keydown事件。所以会发生的是,用户仍然可以放大和缩小/点击拖动,以便在光标位于bing地图内时(不占用整个页面)。但是,当他们一般地关注网站的箭头键时,这应该不会影响bing地图。
初始化新Microsoft.Maps后,我发现我可以添加一个处理程序,取消了地图中的keydown事件:
Microsoft.Maps.Events.addHandler(map, 'keydown', cancelEvent)
谢谢。你是如何弄清楚API调用的? – 2012-07-23 17:49:02
我去寻找keydown处理程序(它必须存在的行为来坚持),并找到了文件取消它。更倾向于尝试覆盖(又名hack)解决方案。 – bcm 2012-08-01 16:00:03
我试过这个答案,它可以工作,但它似乎会导致其他问题,它仍然在地图插件外面的keydown事件中发生混乱。我发现一个更好的方法是在mapOptions中设置disableKeyboardInput:true。另一个选项似乎是在初始化后调用map.blur(),如果你仍然希望键盘输入可用在地图上。 – 2014-07-08 15:35:47
使用document.activeElement .blur()用于Firefox,window.focus()的用于IE,和document.activeElement =文档的Webkit夺回焦点:
<!doctype html>
<html lang="en">
<head>
<title>Blur Object Test</title>
</head>
<body>
<object id="bingmap" data="http://www.bing.com/maps"></object>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<script type="text/javascript">
document.activeElement.blur(); window.focus(); document.activeElement = document;
</script>
</body>
</html>
如果Webkit的不一致,使用鼠标悬停事件,而不是:
function takeback()
{
while(RegExp("object","i").test(document.activeElement.nodeName))
{
window.focus();
document.activeElement.blur();
}
return false;
}
if (!!document.addEventListener)
{
document.addEventListener("mouseover", takeback, false);
}
else
{
window.focus();
}
谢谢保罗仔细想出答案...我会发布我使用的 – bcm 2012-07-23 04:55:03
如果你想完全阻止地图从键盘事件的交互,我认为最好的解决方案是在初始化地图时使用“disableKeyboardInput”属性。
// Initialize the map
map = new Microsoft.Maps.Map(document.getElementById("myMap"), {
credentials:"Bing Maps Key",
disableKeyboardInput: true
});
为了不破坏其他JavaScript(即除去keybinds但保留其他页面的功能)停止这种行为,你需要打破特定的JavaScript调用影响keybinds(其中只有)。
要做到这一点,最简单的方法是使用的GreaseMonkey和预制的脚本,像这样的:Disable website keyboard hooks
- 1. AIX - 默认shell - 箭头键
- 2. 默认行为右箭头键输入Jtable
- 3. 将DataGridView箭头设置为所选行
- 4. 将NSToolbar重置为默认配置
- 5. 将Excel重置为默认边界
- 6. 将元素重置为“默认”事件
- 7. 将扩展器重置为默认的崩溃行为
- 8. android查看重置setNextFocusUpId默认行为
- 9. 将document.title设置为默认
- 10. 如何将Custom Keybo作为默认键盘设置为UITextView?
- 11. 如何为EditText设置默认键盘
- 12. 更改treeitem的默认箭头图标
- 13. 将所有设置设置重置为默认值
- 14. 将构建设置重置为XCode中的默认设置?
- 15. 更改默认帮助键行为
- 16. 如何防止TextField中的向上/向下箭头默认行为?
- 17. 重命名重构期间退格,删除和箭头键的行为
- 18. 重置为默认滑块值react-native
- 19. Git diff工具重置为git默认
- 20. 重置复选框样式为默认
- 21. 形式重置为默认值
- 22. Joomla Meta标题“重置为默认值”
- 23. 箭头键
- 24. shift +箭头键
- 25. Graphviz:如何设置'默认'箭头样式?
- 26. Makefile默认行为
- 27. 在Android中使用OnclickListener时将默认值重置为默认值
- 28. 如何将ListBox.Rows属性重置为默认值(没有硬编码默认值)
- 29. 防止在XAML/C#中的ListView的Return(Enter),向上和向下箭头键的默认行为(Windows 10)
- 30. 为箭头按钮
所以你怎么想,我们回答这个问题?你能否复制这种情况,让所有人都能看到? – Joseph 2012-03-19 04:44:07
禁用JavaScript。根据浏览器和安装的扩展名,您可以选择性地禁用脚本。 – RobG 2012-03-19 05:30:30
与今天的大多数网站一样,禁用JavaScript不是一种选择。要复制,只需将Bing映射添加到任何网页。 – bcm 2012-03-21 02:47:59