我想出了一个可行的方法,对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