如何检测浏览器是否启用javascript s.t。母版页可以做出正确的响应?

如何检测浏览器是否启用javascript s.t。母版页可以做出正确的响应?,javascript,asp.net-mvc,asp.net-mvc-3,Javascript,Asp.net Mvc,Asp.net Mvc 3,我正在开发一个网站使用Asp.NETMVC3withRazor 在\u Layout.cshtml(母版页)中,我想根据浏览器是否启用javascript设置一个逻辑 最简单的方法是什么 为了简单起见,让母版页只输出以下内容: @if(....)//need to modify { <p>javascript enabled...</p>} else {<p>javascript disabled...</p>} @if(..)//需要修改 {启

我正在开发一个网站使用Asp.NETMVC3withRazor

\u Layout.cshtml
(母版页)中,我想根据浏览器是否启用javascript设置一个逻辑

最简单的方法是什么

为了简单起见,让母版页只输出以下内容:

@if(....)//need to modify
{ <p>javascript enabled...</p>}
else {<p>javascript disabled...</p>}
@if(..)//需要修改
{启用了javascript…

} 否则{javascript被禁用…

}
在服务器上无法找到这一点,因此在加载第一页之前无法找到。您所能做的最好是在页面中添加一点Javascript,设置cookie,或者向服务器发布AJAX响应,告知Javascript处于活动状态,这样您就可以在后续页面请求中对其进行处理。即使除去第一页加载这一明显的问题,这也是一个糟糕的策略,因为用户可能会在服务器认为Javascript处于活动状态的同时关闭Javascript


/这里是关键词。使您的页面默认假定没有Javascript处于活动状态,并相应地执行操作,即在任何情况下都提供纯HTML。如果Javascript处于活动状态,则包含将“升级”站点功能的Javascript。让客户端判断Javascript是否正常工作,并为其提供在任何情况下正常工作的方法。

恐怕没有好的解决方案。几乎所有的解决方案都需要运行一个脚本来进行检查,但感觉不对劲(至少对我来说是这样)。我建议的最佳解决方案是使用
标记并重定向到不依赖javascript的其他页面。

如果您想阻止应用程序的访问,可以使用类似的方法

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

这里有一个窍门

假设用户已阻止JavaScript(关闭)。我们将此代码放入index.aspx:

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

这似乎不是一个合适的解决方案。问题在于,用户可能会关闭Javascript并用URL欺骗它,而在一个大页面上,JQuery脚本在页面加载之前不会启动(导致一些东西在用户眼前消失)。
$(".noscript").hide();