3

これは説明が少し難しいので、縮小したテスト ケースをhttp://jsfiddle.net/5Z6h6/1/に設定しました。基本的に何が起こっているかという.draggableと、jQuery UI を iFrame のコンテンツに渡し、jQuery UI の組み込み iframeFix を使用して、iFrame がマウス イベントをキャプチャする際の問題を回避しています。

これは、クリックとドラッグが機能しないように見える Firefox を除いて、うまく機能します。代わりに、クリックしてリリースし、ドラッグしてから、もう一度クリックして配置する必要があります。これは予想される動作ですか?これを回避する方法はありますか?

どんな助けでも大歓迎です。

4

3 に答える 3

0

魔法は、マウスダウンの開始時に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 に答える
0

Firefox のバージョンをアップグレードして、もう一度確認してください。

于 2012-06-03T08:28:44.380 に答える