我创造了一个重现问题的小提琴。
https://jsfiddle.net/rvwp47Lz/23/
callback: function (key, option) {
console.log("You clicked the test button", this);
// Need the iframe contents to regain focus so the mouse events get caught
setTimeout(function () {
$iframe[0].contentWindow.focus();
}, 100);
}
基本上,我想要发生的是关闭上下文菜单后要捕获的鼠标移动事件。
我可以将焦点放在iFrame的正文或文档上,但它似乎没有任何效果。
右键单击iframe中的一个项目并选择一个项目后,不再调用iframes主体上的mousemove事件(您还可以注意到项目上的悬停CSS效果不再有效)。 / p>
想法?
答案 0 :(得分:0)
经过一些调试并使用jQuery.contextMenu的代码后,似乎问题实际上来自于itemClick函数。我在代码中添加了注释,并会向他们的github添加一个问题,以便进行可能的修复(除非他们在某处“禁用默认值”)
// contextMenu item click
itemClick: function (e) {
var $this = $(this),
data = $this.data(),
opt = data.contextMenu,
root = data.contextMenuRoot,
key = data.contextMenuKey,
callback;
// abort if the key is unknown or disabled or is a menu
if (!opt.items[key] || $this.is('.' + root.classNames.disabled + ', .context-menu-submenu, .context-menu-separator, .' + root.classNames.notSelectable)) {
return;
}
// This line is causing the issue since it's preventing the default actions which puts
// mouse events back into place. Chrome must disable mouse move events when the contextmenu event
// gets triggered to improve performance.
//e.preventDefault();
e.stopImmediatePropagation();