1

每当用户滚动页面时,我都会尝试执行 Javascript 函数。

我试过了:

<body onscroll="myScrollFunction()">

这在 Firefox 中运行良好,但在 IE 中运行良好。

我也试过:

window.onscroll = "myScrollFunction()"; 

但这似乎只执行一次功能,类似于 onload 事件,但进一步滚动不会触发该事件。我的文档类型设置为严格;不确定这是否有所作为。

我怎样才能让它在所有浏览器上工作?

我想要完成的是一种防止用户在显示模式后滚动的方法。我宁愿不使用

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>'s设置overflow为。hidden

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

...然后在关闭时恢复正常:

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