我想出了一個可行的方法,對Asp.Net來說還是很新的,所以我對別人的想法很感興趣。
編輯:我擴大的想法通過引入一個臨時的(會話只)的cookie可以記住如果瀏覽器具有NoScript的,所以我們不必保持重定向到同一個頁面,我們只是使用布爾值下一次請求頁面時。
我這樣做是在母版頁的頭:
<noscript>
<%# NoScriptPlaceHolder %>
</noscript>
在TabContainer的的Visible="<%# !NoJavascript %>"
財產。
然後在代碼隱藏:
protected bool NoJavascript
{
get
{
TempCookie cookie = new TempCookie(); // session only cookie
if (cookie.NoJavascript) return true;
bool noJavascript = !string.IsNullOrEmpty(Request["noscript"]);
if (noJavascript)
cookie.NoJavascript = noJavascript;
return noJavascript;
}
}
protected string NoScriptPlaceHolder
{
get
{
if (NoJavascript)
return string.Empty;
string url = Request.Url.ToString();
string adv = "?";
if (url.Contains('?'))
adv = "&";
string meta = string.Format("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL={0}{1}noscript=true\">",
url, adv);
return meta;
}
}
任何其他的想法?未來的想法:如果他們沒有啓用Cookies,我想一個實用程序將noscript查詢值傳遞給每個請求也會有所幫助,否則他們將不斷重定向到每個請求的同一頁面。
如果瀏覽器支持是不是一樣的事情,如果JavaScript被用戶禁用或我錯了嗎? – 2011-04-27 22:19:49
是的,你的權利...對不起...如果你想隱藏JS關閉的東西,你可以設置屬性顯示:無;在CSS中默認隱藏它。然後在頁面中,您可以執行一些JS來刪除屬性以使該元素可見。這將導致HTML呈現,但應該完全隱藏,除非啓用JS。 – Zachary 2011-04-27 22:44:26
這就是爲什麼我想出了這個組件。它允許我檢測JS是否被禁用並採取相應措施。 – 2011-04-28 00:01:40