2015-02-09 56 views
3

我正在设计一个完全在浏览器中进行的交互式网页游戏。它使用html5,并且所有内容(包括元素)都是游戏世界的一部分。既然是这样,我需要对元素的位置,滚动位置,缩放等进行非常严格的控制。有没有办法阻止浏览器缓存滚动位置和缩放级别的值?

一个特定的级别要求将一个元素置于屏幕之外(就在视口之外),这样用户必须滚动页面才能找到它。不幸的是,滚动后,页面似乎记录了页面的新宽度,包括最初看不见的元素。刷新页面时,会调整缩放级别,以便将隐藏元素的整个屏幕放入视口中。这给了难题并且破坏了关卡。

我知道浏览器存储滚动位置等信息,以便当用户重新访问页面时,他们可以从停止的地方继续阅读。这对某些事情很好,但对我的目的不利。有没有办法阻止我的浏览器的这种缓存行为?有没有办法使用JavaScript获取或设置页面的缩放级别?

当前我正在使用下面的代码重置用户离开页面之前的滚动位置。它工作得很好,但用户可以在离开前看到滚动页面。

window.addEventListener("beforeunload",function(event_){ 
    window.scrollTo(0,0); 
    /* What I would love is if there were a way to do this: */ 
    // window.zoomTo(1.0); 
    /* But I'm sure that's asking for too much. */ 
}); 

回答

0

我设法通过它的CSS position属性设置为fixed保持隐藏的元素出来的HTML流的所有合作,解决我的问题。我通过改变一些自定义触摸事件处理程序的值style.left值来模拟页面滚动。由于固定的位置元素不会影响布局,所以页面不需要调整大小或缩放以添加屏幕外元素。

这并不回答我关于重置缩放级别的问题,但是,我仍然会很感激任何人都可能有的见解。