3

这有点难以解释,所以我在这里设置了一个简化的测试用例:http: //jsfiddle.net/5Z6h6/1/。基本上发生的事情是我将 jQuery UI 传递.draggable给 iFrame 的内容,并使用 jQuery UI 的内置 iframeFix 来避免 iFrame 捕获鼠标事件的问题。

这很好用,除了在 Firefox 中,点击和拖动似乎不再起作用;相反,您必须单击、释放、拖动,然后再次单击以放置。这是预期的行为吗?有没有解决的办法?

任何帮助深表感谢。

4

3 回答 3

0

升级您的 Firefox 版本并再次检查。

于 2012-06-03T08:28:44.380 回答
0

魔术是在 mousedown 开始时轻弹 iframe:

$iframe.css('display', 'none');

然后设置可拖动和触发事件:

$draggable.trigger(event);  

然后再次显示 iframe:

$iframe.css('display', 'block'); 

该功能应该运行得足够快,所以你不应该看到任何闪烁 - 我反复试验才找到这个,但这解决了我在 Firefox 中的 iframe 问题。

于 2012-10-13T00:00:41.333 回答
0

这花了我很长时间才弄清楚,这里发布的解决方案不起作用,而且它似乎仍然是 jQuery 中的一个问题。

问题是在 Firefox 中,mousedown、mouseup 和 mousemove 事件似乎不会从 iframe 冒泡到父文档。

我使用的解决方法是这样的:

// From parent document
// Get iframe 'document'
var $iframe = $('iframe').$el.content();

// Then bind listeners for events, and trigger them on parent document
$iframe.on({
    mousemove: function(e){
        $(document).trigger(e);
    },
    mousedown: function (e) {
        $(document).trigger(e);
    },
    mouseup: function (e) {
        $(document).trigger(e);
    }
});

希望这可以节省人们一些时间。

于 2014-08-06T15:54:13.803 回答