使用jQuery上下文菜单重新关注iFrame

时间:2016-10-24 16:09:31

标签: javascript jquery iframe

我创造了一个重​​现问题的小提琴。

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>

想法?

1 个答案:

答案 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();