我主持的遊戲依賴於Rails服務器上的HTML/CSS/JS。這些遊戲以他們自己的特定視圖顯示。Rails 4在特定頁面加載/預加載JavaScript遊戲時遇到的麻煩
而資產管道加載所有遊戲代碼無論你在哪裏的服務器(我很好)參觀,場均只應該在特定視圖在一個特定的div來顯示。資源,就像CDN發送的聲音和圖像一樣,只有當包含這個div的頁面被訪問時纔會被預加載。
<div id="game-goes-here"></div>
我目前的實現使用每個遊戲的預加載腳本。它們每個都包含附加到$(document).on("page:change", somePreloadingFunction)
的事件偵聽器以及window.page
變量,以嘗試確保遊戲代碼僅在特定div位於頁面上時與用戶進行交互。該計劃是這樣的。
在包含遊戲的看法:
<%= javascript_tag do %>
window.page = "<%= @game && @game.name %>"
<% end %>
預緊/ UI設定腳本:
var ready = function() {
if(window.page == "specific_game_name") {
game.gameContainer = $("#game-goes-here"); // Attach UI to this div
//Load game assets, once loaded begin game display
}
};
$(document).on("page:change", ready);
這工作得很好,我第一次點擊一個鏈接去我的遊戲之一。但是如果我然後使用後退按鈕並再試一次,我會得到一個空白頁面,或者預加載器進入一個永無止境的循環,並且不會顯示遊戲。問題通過直接訪問URL或在我的網站上的任何地方刷新並再次嘗試解決。
我真的不知道這裏可能會出現什麼問題。這是Turbolinks還是瀏覽器緩存問題,或者我不知道?
刪除turbo-links並嘗試 –