0

これは、公式の例で簡単に繰り返すことができます: http://www.jacklmoore.com/colorbox/example1/

最初の例を開き、ページを 4 ~ 5 回続けて上下に「激しく」スクロールしてみてください。カラーボックスが少しずれることがあります。次に、カラーボックスを閉じてみます。カラーボックスの外側のどこに触れても、閉じるボタンに触れても、何も起こらないように見えます。手動の $.colorbox.close() 呼び出しと閉じるボタンのタッチ イベントへのアラートを手動で追加してみました。アラートは (実際には 2 回) 表示されますが、Colorbox は閉じません。閉じる方法は絶対にありません。このアクションは、どういうわけか根本的に何かを壊しているようです。

うまくプレイしてカラーボックスの外側に触れるか、閉じるボタンに触れるだけであれば問題なく動作しますが、「ラフなスクロール」を行うと、どういうわけか完全に壊れてしまうように見えます.

それで、いくつか質問があります。1. 他の誰かがこれを再現できますか? (または、私はひどく間違ったことをしていますか?) 2. 誰かがこれに遭遇したことがありますか? 3. その場合、回避策はありますか?

4

2 に答える 2

1

編集:このバグはjQuery1.8.3で修正されています。

jQuery 1.8.2を使用している場合は、次のパッチで問題が解決します。

--- jquery-1.8.2.js (original)
+++ jquery-1.8.2.js (fixed)
@@ -8615,6 +8615,9 @@
            delete tick.elem;
        }),
        tick = function() {
+           setTimeout(function() {
+               fxNow = undefined;
+           }, 0 );
            var currentTime = fxNow || createFxNow(),
                remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
                percent = 1 - ( remaining / animation.duration || 0 ),

jQuery 1.7.1を使用している場合は、代わりに次のパッチが機能します。

--- jquery-1.7.1.js (original)
+++ jquery-1.7.1.js (fixed)
@@ -8706,6 +8706,7 @@

    // Each step of an animation
    step: function( gotoEnd ) {
+       setTimeout( clearFxNow, 0 );
        var p, n, complete,
            t = fxNow || createFxNow(),
            done = true,

このバグに関する詳細情報をチケット#12837でjQueryに送信しました。

于 2012-11-02T18:05:26.490 に答える
1

私も最近この問題を経験しました。この問題は、何らかの理由で jQuery のアニメーションの最適化が更新されないことに起因しています。これにより、Colorbox はアニメーションで同じステップを何度も表示し続けます。私が見つけた唯一の回避策は、Colorbox スクリプトを変更して、すべてのフェード アニメーションのタイミング アトリビュートを 0 に設定することでした。これで問題は解決したように見えますが、優れた効果は失われます。これがお役に立てば幸いです。

于 2012-10-24T22:22:24.013 に答える