2014-03-24 16 views
0

我主持的遊戲依賴於Rails服務器上的HTML/CSS/JS。這些遊戲以他們自己的特定視圖顯示。Rails 4在特定頁面加載/預加載JavaScript遊戲時遇到的麻煩

vardarac.us

而資產管道加載所有遊戲代碼無論你在哪裏的服務器(我很好)參觀,場均只應該在特定視圖在一個特定的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還是瀏覽器緩存問題,或者我不知道?

+0

刪除turbo-links並嘗試 –

回答

0

我建議你先嚐試禁用turbolinks(將「data-no-turbolinks」添加到BODY標籤)並查看它是否有效。如果確實如此,你現在確定它確實會破壞某些東西。你的第一個選擇是以這種方式離開它:)另一方面,如果你想要你的turbolinks回來,我隱約記得我必須實現jQuery的標準文檔準備好「處理程序」和turbolinks頁面:加載,使一切工作(幾個月前,當我面臨類似的問題時),因爲有時前者會被調用,有時後者會被調用。

對不起,不能更具體,但我現在無法找到該代碼。無論如何,祝你好運!

+0

我禁用turbolinks的遊戲只有通過添加'data-no-turbolinks =「true」'從主頁通往他們的鏈接。這似乎解決了問題! – Vardarac