2009-09-17 57 views
3

我正在用PHP/Zend Framework和Facebook JavaScript編寫遊戲。該遊戲板顯示在一個滾動窗口中。要查看整個遊戲板,用戶必須滾動。遊戲的每一步都會導致頁面刷新,因此當用戶移動到另一個步驟時,它們的滾動位置將丟失,窗口將返回到默認位置。我想知道是否有辦法自動讓該滾動窗口返回到頁面刷新前的位置,以便用戶不必滾動回到原來的位置?謝謝!需要一種方法來在頁面刷新後返回滾動窗口位置

回答

3

如果你正在創建一個基於鏈接的遊戲,我會使用AJAX將你的點擊數據發送到你的服務器,處理它,然後將它返回給用戶而不刷新頁面。

這將防止你不得不使用JS在頁面上滾動,它也會使玩遊戲的玩家更快,更愉快。

+0

+1。頁面自動滾動令人難以置信的煩人 – 2009-09-17 03:06:09

+0

我聽到雅,我完全同意。問題是,我對AJAX非常陌生。我在我的應用程序中有一些AJAX代碼,但是在AJAX中編寫整個應用程序似乎會導致這個巨大的前端應用程序頻繁地發生後端調用。我很熟悉在Zend Framework中組織我的應用程序,但我不知道如何組織像這樣的大型前端應用程序,因此我堅持我所知道的。 – 2009-09-17 03:47:15

2

將該位置保存在onunload(或每個滾動事件之後)Window.name或cookie中,然後在頁面加載時滾動到該點。
但是,Ajax解決方案是一種更好的方法。

+0

我試過這個解決方案,但我無法使它工作,因爲我使用的是Facebook JS,我沒有訪問標籤,所以我不能實現onload/onunload。 我發現了onload的解決方法,但不是onunload。我嘗試使用setInterval()更新當前滾動位置的cookie,但後來我也發現FB禁止訪問cookie): Ajax將涉及重寫我的大部分應用程序,而我根本沒有時間。 我確實考慮過使用setInterval()和ajax調用每隔幾秒左右發送一次滾動條到後端。這似乎... – 2009-09-17 19:54:02

+0

喜歡它會淹沒服務器,每隔1-5秒從每個用戶獲取這些ajax調用? – 2009-09-17 19:55:22

+0

真的取決於服務器...您可以在腳本標籤內動態添加事件。在行上的東西:body.onload = f; // f是一個函數。當然,你需要弄清楚正確的語法。 – 2009-09-17 20:55:09

0

使用<a name="game">並刷新爲gamePage.html#game

+0

但是,這將涉及到添加一個錨到每個可點擊的元素上我假設是一個'平鋪'的遊戲板。那將會是很多主播的問題。 – BraedenP 2009-09-17 02:44:44

+0

PHP可以在所需的位置添加一個錨點。 – 2009-09-17 03:05:38

+0

否....應在每次滾動事件之後創建錨點。聽起來很麻煩,我不認爲你可以改變頁面的網址,而不會導致頁面刷新。 – 2009-09-17 03:16:36