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

我正在使用Asz.net MVC 3和Razor开发一个站点。 在
_Layout.cshtml
(主页面)中我想根据浏览器是否启用javascript来设置逻辑。 制作这种逻辑的最简单方法是什么? 为简单起见,让母版页输出如下:
@if(....)//need to modify
{ <p>javascript enabled...</p>}
else {<p>javascript disabled...</p>}
    
已邀请:
没有办法在服务器上找到它,因此在第一页加载之前无法找到。您可以做的最好的事情是将一些Javascript放入设置cookie的页面或向服务器发布AJAX响应,告诉它Javascript处于活动状态,因此您可以在后续页面请求中执行某些操作。即使除了第一页加载的明显问题之外,这也是一个糟糕的策略,因为用户可能会在此期间关闭Javascript,同时您的服务器仍然认为它是活动的。 优雅降级/渐进增强是这里的关键词。默认情况下,让您的页面假定没有Javascript处于活动状态并相应地执行操作,即在任何一种情况下都提供纯HTML。如果Javascript处于活动状态,请包含将“升级”网站功能的Javascript。让客户弄清楚Javascript是否正常工作,并为其提供工作方式。     
如果您想阻止应用程序的访问,您可以使用类似的东西
<noscript>
    <meta http-equiv="refresh" content="0;url=../Controller/Error" />
</noscript>
    
我担心没有好的解决方案。几乎所有解决方案都在某种程度上涉及运行脚本来进行检查,并且感觉不对(至少对我而言)。我建议的最佳解决方案是使用
<noscript />
标签并重定向到不依赖于javascript的不同页面。     
这是一招...... 假设用户已阻止(关闭)JavaScript。我们将此代码放入index.aspx:
<script>
document.location.href = "index.aspx?js=1";
</script>
如果你得到js = 1,你知道用户已经启用了JS。 所以你可以根据用户有/没有JS生成代码。 另一种方法是生成具有一些特殊类的内容,例如
<div class="noscript">
,然后运行脚本(jQuery):
$(".noscript").hide();
    

要回复问题请先登录注册