【发布时间】:2016-07-25 14:36:53
【问题描述】:
我制作这个小提琴是为了让调试更容易 -> https://jsfiddle.net/ayo8voh2/
JS:
jQuery('.edit-view-submenu').mousedown(function(event) {
if (event.which === 3) { // right mouse clicked
// disable default menu
jQuery(this).bind('contextmenu', function() {
return false;
});
jQuery(this).find('.mdl-button').trigger('click');
}
});
HTML:
<div class="edit-view-submenu">
<button id="edit-context"
class="mdl-button mdl-js-button mdl-button--icon float-right">
<i class="material-icons">more_vert</i>
</button>
<ul class="mdl-menu mdl-menu--bottom-left mdl-js-menu mdl-js-ripple-effect"
for="edit-context">
<li class="mdl-menu__item">Show</li>
<li class="mdl-menu__item">Show 2</li>
<li class="mdl-menu__item">Show 3</li>
<li class="mdl-menu__item">Show 4</li>
</ul>
</div>
我想做的是当用户用鼠标右键单击菜单按钮时,禁用默认浏览器上下文菜单并触发默认鼠标左键单击(以便打开 mdl 上下文菜单)。
重新创建问题:
1) 首先在 Chrome 中打开 fiddle,然后用鼠标右键单击菜单图标(3 个点)——注意它是如何很好地打开菜单的; 2) 现在在 Firefox 中打开相同的小提琴并执行相同的操作 - 注意菜单如何打开并立即关闭; (如果你用鼠标右键单击并按住,它会保持打开状态。另外,如果你用鼠标右键单击然后将光标移动到打开的菜单上,它也会保持打开状态)
我找不到解决这个问题的方法,因为这个错误(?)对我来说真的很奇怪。也许 Firefox 有一些你们知道而我不知道的东西?
可以通过定位菜单来克服这个问题,这样当它打开时,它会在鼠标光标所在的位置打开 - 然后它不会消失,但这不是一个正常的修复,更像是一个“丑陋的修复” .
感谢您对此进行调查并进行良好的调试(如果需要)。
【问题讨论】:
标签: javascript jquery google-chrome firefox material-design-lite