2015-02-09 58 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值來模擬頁面滾動。由於固定的位置元素不會影響佈局,所以頁面不需要調整大小或縮放以添加屏幕外元素。

這並不回答我關於重置縮放級別的問題,但是,我仍然會很感激任何人都可能有的見解。