2013-06-04 43 views
2

我已经建立了一个网站只是为了尝试一些我的想法和学习。我在Firefox中测试时发现了一个问题。我做了一个滚动功能,当图像到达特定位置时滚动页面。图像通过箭头键移动。它在IE9和Chrome中运行良好,但在Firefox中,当我输入箭头键时,页面会滚动。我认为这是因为arrowKeys上的页面向下,页面向下,主页和结束导航,但是如果我在Firefox中通过箭头键禁用导航,问题仍然存在。在Firefox中奇怪的JavaScript滚动

的滚动功能:

function scrollPage() { 
    if(xpos > scrollPosX[scrolledX + 1]) { 
     scrolledX++; 
     window.scroll(scrollPosX[scrolledX],scrollPosY[scrolledY]);     
    } 
    if(xpos < scrollPosX[scrolledX] - ufoWidth) { 
     scrolledX--; 
     window.scroll(scrollPosX[scrolledX],scrollPosY[scrolledY]);     
    } 
    if(ypos > scrollPosY[scrolledY + 1]) { 
     scrolledY++; 
     window.scroll(scrollPosX[scrolledX],scrollPosY[scrolledY]);     
    } 
    if(ypos < scrollPosY[scrolledY] - ufoHeight) { 
     scrolledY--; 
     window.scroll(scrollPosX[scrolledX],scrollPosY[scrolledY]);     
    } 

    info5.html('scrolledX: ' + scrolledX + '<br />scrolledY: ' + scrolledY + '<br />scrollPosX: ' + scrollPosX[scrolledX] + '<br />scrollPosY: ' + scrollPosY[scrolledY]); 
    scrollLoop = setTimeout(scrollPage, 100); 
} 
  • XPOS和ypos是图像的左侧和顶部位置。
  • scrollPosX和scrollPosY是包含滚动到 位置的数组。
  • scrolledX和scrolledY用于计算卷轴。

这是我上传的演示。对于完整的代码请查阅页面源:http://www.mikeywebs.nl/

我希望有人能告诉我如何解决这个问题。对我的代码的一些评论也是值得欢迎的,因为我仍然在学习。

Thanx。

回答

1

在您的演示代码中,没有什么能够防止滚动事件触发。试试这个近线96在内联JS代码:

$(document).keydown(function(e){ 
    e.preventDefault(); // Add this 
    var code = e.keyCode; 
    switch (code) { 

如需进一步信息在这里对SO有关防止滚动: How to disable scrolling.

+0

谢谢您的回答。是的,滚动功能很好,但在Firefox中(也许只有在我的Firefox中),当我使用箭头键时,页面开始滚动。当图像到达正确位置时,页面仍然滚动到给定位置。当你在Firefox中运行这个演示程序时它会发生吗? – Zeebats

+0

我测试了你的演示,它在Firefox 21中为Ubuntu做滚动。但是,在我向您建议的更改后它不会滚动。 – rvidal

+0

是的,它解决了这个问题。 – Zeebats