0

ページ内にそのようなdivがあります

<div class="test">Click here</div>

そしてその上でイベント

events: {
    'click .test': 'myFunc',
},

ダイアログ ウィンドウが開きますが、Internet Explorer v9 および v10 では、ページが一番上までスクロールします。デバッグ後、問題を追跡できませんでした。

クリックした瞬間にリンクにスクロールするハックも試しました。コードは次のとおりです。

var x = (window.pageXOffset !== undefined) ? window.pageXOffset : (document.documentElement || document.body).scrollLeft,
    y = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body).scrollTop;

これもうまくいきませんでした。何か案は?

アップデート

問題はバックボーンではなく、拡張された jQuery フォーカス機能にあります。ご覧ください:

var originalFocus = $.fn.focus;
$.fn.focus = function () {
    if (this.hasClass('no-scroll')) {
        var x = (window.pageXOffset !== undefined) ? window.pageXOffset : (document.documentElement || document.body).scrollLeft,
            y = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body).scrollTop;

        originalFocus.apply(this, arguments);
        window.scrollTo(x, y);

    } else {
        return originalFocus.apply(this, arguments);
    }
};

別のブラウザではうまく機能しますが、IEでは機能しません。IEを適用した後、scrollToに到達しないようです..

4

1 に答える 1

0

これは、予想よりも簡単な問題かもしれないと思います。上記のコードがすべてである場合、指摘できる問題が 1 つあります。

イベント オブジェクトでは、行の後に何も進行しない場合、行の後にコンマを含めることはできません。余分なコンマを削除すると、

events: {
    'click .test': 'myFunc'
}

繰り返しますが、コードを削除した可能性があるため、私の主張は無効ですが、これらのことを提案することは常に安全です!

于 2013-03-29T15:25:51.817 に答える