2009-04-13 83 views
9

我正在創建一個使用Rails內置幫助函數向網站添加ajax功能的Web應用程序。我不希望用戶能夠在沒有JS的情況下使用該應用程序,因爲它無法正常工作。Ruby on Rails,Javascript檢測

我需要能夠防止這種情況。我怎麼能停止用戶加載我的任何頁面沒有JS?

我試圖在我的佈局中使用標籤。這檢測到JS的缺席,但仍然呈現的意見。將腳本標記放在yield上可防止呈現任何視圖。

有關如何做到這一點的任何想法?

回答

21

您可以在head元素中包含一個noscript塊,並在其中包含元刷新標記。例如:

<head> 
    <!-- title, scripts, css etc go here --> 
    <noscript> 
     <meta http-equiv="refresh" content="2;url=http://yoursite.com/nojswarning.html"> 
    </noscript> 
</head> 

你可以閱讀更多關於元刷新here

希望這有助於

編輯:爲了澄清,該noscript標籤只有在關閉了JavaScript的用戶運行。所以在這種情況下,如果JS被關閉,用戶將被重定向到http://yoursite.com/nojswarning.html。當然,你可以改變它成爲你想要的任何網站上的任何頁面。

+0

謝謝你,偉大的職位,工作完美。 – 2014-03-02 02:44:21

2

簡單的答案是讓整個應用程序通過JS加載。這樣,應用程序永遠不會顯示有人啓用了JS。

另一種方法是使用加載到JS檢查頁面的iframe啓動頁面。所有頁面都會通過JS將用戶重定向到應用程序的真實URL。因此,如果用戶沒有JS,他們將不會被重定向(並且您可以通知他們他們需要JS with < noscript>標籤)。 (我說要使用iframe,所以你不會給非JS用戶一個簡單的URL來獲得應用程序。)

0

<noscript></noscript>似乎工作。我會默認一個帶有疊加層的小型加載器,如果客戶端不支持JavaScript,那麼javascript永遠不會隱藏加載器。 <noscript>標籤中的內容將與疊加層一起顯示。