2011-03-04 33 views

回答

6

有沒有辦法找出這在服務器上,因此沒有辦法找出之前,首先頁面加載。你可以做的最好的做法是在設置cookie的頁面中放入一些Javascript,或者向服務器發送一個AJAX響應,告訴它Javascript是活動的,這樣你就可以在後續的頁面請求上做些什麼。即使除了第一次加載頁面的明顯問題之外,這是一個糟糕的策略,因爲在服務器仍然認爲它處於活動狀態的同時,用戶可能會關閉Javascript。

Graceful degradation/progressive enhancement是這裏的關鍵詞。默認情況下,假設您的頁面沒有任何Javascript處於活動狀態並採取相應的行動,即在任何情況下都提供純HTML。包含Javascript,如果Javascript處於活動狀態,它將「升級」該網站的功能。讓客戶弄清楚Javascript是否在工作,並讓它能夠在任何情況下工作。

1

恐怕沒有好的解決方案。幾乎所有的解決方案都涉及到運行腳本來執行檢查,而且感覺不正確(至少對我而言)。我建議的最佳解決方案是使用<noscript />標記並重定向到不依賴於JavaScript的其他頁面。

7

如果你想阻止你的應用程序的訪問,你可以使用這樣的事情

<noscript> 
    <meta http-equiv="refresh" content="0;url=../Controller/Error" /> 
</noscript> 
-2

這裏有一個竅門......

假設用戶已經JavaScript的阻塞(關閉)。我們把這個代碼進入的Index.aspx:

<script> 
document.location.href = "index.aspx?js=1"; 
</script> 

如果你得到JS = 1,你知道該用戶已啓用JS。

所以你可以根據用戶有/沒有JS生成代碼。

另一種方式是生成一些特殊類的內容,例如, <div class="noscript">,然後你運行腳本(jQuery):

$(".noscript").hide(); 
+0

這一個似乎不是一個適當的解決方案。 – 2013-06-19 14:24:37

+0

與此相關的問題是用戶可以關閉Javascript並用它們的URL來欺騙它,並且在大頁面上JQuery腳本在頁面加載之前不會觸發(導致用戶眼前的東西消失)。 – 2013-08-02 12:12:21

相關問題