1

ページのすべてのイベントを「一時停止」したいのですが、これはすべてのイベントセットを削除することを意味します...そしてそれらを後で元に戻すことができます。

最初の部分=ページのすべてのイベントを削除しても、その方法がわかりません。アイデアはありますか?

うまくいくものが見つかりません!

編集:

なんで?すでに読み込まれているページで行動したい。ユーザーがページを操作し、操作を制御したいので、以前に設定したすべての操作を削除します。

4

6 に答える 6

1

unbind()すべてのイベントを削除するために使用できます

$.unbind();
于 2010-11-18T19:38:14.360 に答える
1

すべてのイベントリスナーをeventMapに保存する必要があります。

EventMap = {

    listeners:[],
    paused:false,

    mapListener:function(eventDispacter, eventType, eventHandler) {
        listeners.push({eD:eventDispacter, eT:eventType, eH:eventHandler});

        if(!paused)
            eventDispacter.addEventListener(eventType, eventHandler);
    },

    unMapListener:function(eventDispacter, eventType, eventHandler) {
        for( var i=0; i<listeners.length; i++) {
            var listener = listeners[i];

            if(listener.eD == eventDispacter && listener.eT == eventType && listener.eH == eventHandler) {
                listeners.splice(listeners.indexOf(listener), 1);
                eventDispacter.removeEventListener(eventType, eventHandler);
            }               
        }
    },

    pauseEvents:function() {
        if(!paused) {}
            for( var i=0; i<listeners.length; i++) {
                var listener = listeners[i];
                listener.eD.removeEventHandler(listener.eT, listener.eH);
            }
        }
    },

    unPauseEvents:function() {
        if(paused) {}
            for( var i=0; i<listeners.length; i++) {
                var listener = listeners[i];
                listener.eD.addEventHandler(listener.eT, listener.eH);
            }
        }
    }
}

でイベントを追加

<script>
    function handleClick( e ) {
        alert('Button Clicked');
    }

    EventMap.mapListener(document.getElementById('myButton'), 'click', handleClick);
</script>

でイベントを一時停止

EventMap.pauseEvents();
于 2010-11-18T19:47:01.587 に答える
1

これが私が現在使用している解決策です:それは問題を完全に解決するわけではありません!

キャプチャフェーズ中にイベントを停止します。ドキュメントオブジェクトにリスナーを配置して、キャプチャフェーズのすべてのイベントをリッスンし、伝播を停止します。

+:

  • リストアイテム
  • 問題を部分的に解決します

-:

  • IEでは機能しません(キャプチャフェーズなし)
  • ドキュメントに添付されている他のイベントがある場合、リスナーの前で発生します。

より良い解決策はありますか?

PS:より良い解決策を見つけたら、この投稿を更新し続けます

于 2010-11-22T16:39:23.867 に答える
0

AJAXインタラクションの場合、少なくともajaxキューを使用して接続を中止でき、現在のアニメーションの場合は、stop()を使用できます。

于 2010-11-18T19:43:08.000 に答える
0

すべてのイベントハンドラーをデタッチする代わりに、すべてのイベントハンドラーでpausedチェックされるグローバルブール変数を使用できます。

var paused = false;

function handle_some_click(e) {
    if (!paused) {
        // do something
    }
}
于 2010-11-22T16:04:43.667 に答える
-1

なぜこれを行うのかわかりません...しかし、すべてのJavaScriptを外部の.jsファイルに入れることができます(すでに必要です。次に、ページにハードコードされた単一のJavaScript関数を使用します...このような:

<script type="text/javascript" id="toggle" src="/myExternalJS.js"></script>
<script  type="text/javascript">
var hidden = false;

function toggleScripts() {
     if(hidden) {
          document.getElementById('toggle').setAttribute('src' '/none.js');
    } else {
          document.getElementById('toggle').setAttribute('src' '/myExternalJS.js');
    }
}

これでうまくいくと思います...}

于 2010-11-18T19:39:43.690 に答える