1

ユーザーがページをスクロールするたびに Javascript 関数を実行しようとしています。

私はもう試した:

<body onscroll="myScrollFunction()">

これは Firefox では正常に機能しますが、IE では機能しません。

私も試しました:

window.onscroll = "myScrollFunction()"; 

ただし、これは onload イベントと同様に関数を 1 回だけ実行するように見えますが、それ以上スクロールしてもイベントは発生しません。私のDoctypeは厳密に設定されています。これが違いを生むかどうかはわかりません。

これをすべてのブラウザーで機能させるにはどうすればよいですか?

私が達成しようとしているのは、モーダルが表示されたらユーザーがスクロールできないようにする方法です。使わない方がいい

overflow:hidden

モーダルが表示されると(スクロールバーを補うために)ドキュメントがわずかに移動するため、スクロール機能をキャプチャして、モーダルが表示されるたびにページの上部にロックできると考えました。これを行う簡単な方法がある場合は、お知らせください。

4

3 に答える 3

4

それ以外の

window.onscroll = myScrollFunction();

の結果をmyScrollFunction()onscroll ハンドラーに割り当てます。

window.onscroll = myScrollFunction;

関数自体を割り当てるため、各スクロールで呼び出されます。

于 2012-06-13T13:53:31.857 に答える
1

position: fixed;それを行う代わりに、ページではなくビューポートに修正するモーダルダイアログを与えることをお勧めします。

于 2012-06-13T13:53:03.993 に答える
0

ライトボックスが開いている間に を に設定し<body>ます。overflowhidden

$('body').css('overflow','hidden');

...その後、閉じると通常に戻ります。

$('body').css('overflow','auto');
于 2012-06-13T14:12:48.850 に答える