2012-07-14 45 views
0

好吧,我一直在做一些檢測,如果用戶已禁用CSS的研究。我知道即使世界上沒有2%的瀏覽器使用css禁用,但我仍然需要檢測是否加載了css。隱藏內容或重定向,如果CSS禁用jQuery

基本上我使用經典的asp和jquery組合來檢測用戶是否登錄,然後用jquery將淡入淡出的窗口與登錄窗體。如果用戶轉到該特定頁面並禁用了CSS,我的所有內容仍然可以隨時使用。

我想知道是否有更好的方法來做到這一點與jQuery?一些將檢測樣式表是否已被禁用/移除的東西。

如果javascript被禁用,我已經使用<noscript>來重定向用戶,但我想採取額外的預防措施並重定向它們。

我試着用一個簡單的javascript顯示檢查來查看一個特定的div元素是否被隱藏,以'檢測'如果css被禁用。但在Chrome瀏覽器中,如果我在頁面上,並且我使用Web開發人員來禁用JavaScript警報不顯示的所有CSS。警報只是作爲測試來檢查它,我會一旦找出正確的方法來添加重定向。

任何幫助或建議非常感謝,提前致謝。

<noscript> 
<meta http-equiv='refresh' content='0;url=old_login.asp'/> 
</noscript> 


<script type="text/javascript"> 
    var csschk = document.getElementById('nocss'); 

    if (csschk.style.display = 'none') { 
    } else { 
     alert('Please enable CSS to view this page'); 
    } 

</script> 

<style> 
#nocss { 
display: none; 
} 
</style> 

<div id="nocss">no css</div> 
+0

我是否明白這一點:您實際上是否通過身份驗證提供了所有您嘗試保護的數據,並且您添加的所有「安全性」都隱藏在客戶端瀏覽器中?相信我,用這個方案你不必爲禁用CSS而煩惱。 – arkascha 2012-07-14 21:46:13

+0

非常多哈哈。我只是用包含登錄腳本的透明覆蓋屏蔽了頁面,因此大部分頁面仍然可見,只是功能無法訪問。我知道這可能不是迄今爲止最安全的方法.. – xxstevenxo 2012-07-14 21:49:10

+0

每個人都可以通過使用純文本瀏覽器從您提供的源代碼複製它,甚至更簡單地獲取內容。 – arkascha 2012-07-14 21:51:19

回答

1

我想你在這裏有更嚴重的問題。無論啓用或不啓用CSS,簡單的查看源都會顯示您的頁面及其內容。

你需要重新思考你的方法。您可以在顯示安全內容之前使用憑據進行常規表單發佈,或者如果您想避免頁面刷新,請使用AJAX。

看到這裏提交使用Ajax表單的例子: http://randomactsofcoding.blogspot.com.au/2008/10/jquery-ajax-and-classic-asp.html http://heybigname.com/2009/04/15/ajax-with-jquery-a-simple-login-example/ http://blog.webwizo.com/2011/05/04/simple-login-with-php-and-jquery-ajax/

出於學術目的,要檢查頁面是否有CSS,可以使用jQuery/JavaScript檢測頭標記內是否存在鏈接標記。

您還可以使用像Modernizr這樣的庫來執行功能檢測並檢查CSS功能是否可以在瀏覽器中使用。

+0

我原本是通過使用憑據來顯示頁面或重定向到登錄名的正確方法,但我認爲在登錄頁面上使用一個jQuery覆蓋頁面上的小jQuery覆蓋效果會更好,直到我意識到我暴露了我所有的內容的方式。您是否建議我使用AJAX刷新屏蔽該頁面的div?或者我誤解了你?我以前從未使用過AJAX,但如果你知道一些好的鏈接,我一定會檢查出來。感謝您的回覆 – xxstevenxo 2012-07-14 22:17:55

+0

查看我的更新回答 – 2012-07-14 23:51:39