1

私はIE9で奇妙な問題を抱えています。

入力要素をカラーボックス (インライン HTML) 内に配置した場合、その入力要素にフォーカスがある状態で Enter キーを押すと、カラーボックスが閉じますか?

これは Chrome では発生しません。

この問題を実証するために jsfiddle をセットアップしました。

  • フィドルを開く: http://jsfiddle.net/rv74f/3/
  • インライン HTMLリンクをクリックします。
  • 結果のテキスト ボックスをクリックして、フォーカスを与えます。
  • キーボードの Enter キーを押すと、カラーボックスがフェードアウトしますか?

この動作を防止/説明するためのオプションが表示されませんか?

すべての入力要素でキープレスイベントをキャッチする以外に、Enter がカラーボックスを閉じないようにするにはどうすればよいですか?

カラーボックスのソースをざっと見たところ、次のようなパラメーターに気付きましたが、escKey: true,この Enter キーの問題を説明するものは何もありませんか?

編集:

以下を追加するとpublicMethod.close()

alert("caller is " + arguments.callee.caller.toString());

.close() が呼び出されていることがわかりますpublicMethod.close()

代わりに以下を追加すると (caller.caller を使用してスタックをさらに上に移動することに注意してください):

alert("caller is " + arguments.callee.caller.caller.toString());

私は以下を取得します:

---------------------------
Message from webpage
---------------------------
caller is 
function( event ) {

    // Make a writable jQuery.Event from the native event object
    event = jQuery.event.fix( event );

    var i, ret, handleObj, matched, j,
        handlerQueue = [],
        args = core_slice.call( arguments ),
        handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
        special = jQuery.event.special[ event.type ] || {};

    // Use the fix-ed jQuery.Event rather than the (read-only) native event
    args[0] = event;
    event.delegateTarget = this;

    // Call the preDispatch hook for the mapped type, and let it bail if desired
    if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
        return;
    }

    // Determine handlers
    handlerQueue = jQuery.event.handlers.call( this, event, handlers );

    // Run delegates first; they may want to stop propagation beneath us
    i = 0;
    while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
        event.currentTarget = matched.elem;

        j = 0;
        while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {

            // Triggered event must either 1) have no namespace, or
            // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
            if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {

                event.handleObj = handleObj;
                event.data = handleObj.data;

                ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
                        .apply( matched.elem, args );

                if ( ret !== undefined ) {
                    if ( (event.result = ret) === false ) {
                        event.preventDefault();
                        event.stopPropagation();
                    }
                }
            }
        }
    }

    // Call the postDispatch hook for the mapped type
    if ( special.postDispatch ) {
        special.postDispatch.call( this, event );
    }

    return event.result;
}
---------------------------
OK   
---------------------------

colorbox.close() メソッドは JQuery 関数によって呼び出されているのでしょうか? 今、私は理由を理解する必要があります....

謎が深まる……。

4

1 に答える 1