2011-03-04 31 views

回答

6

有没有办法找出这在服务器上,因此没有办法找出之前,首先页面加载。你可以做的最好的做法是在设置cookie的页面中放入一些Javascript,或者向服务器发送一个AJAX响应,告诉它Javascript是活动的,这样你就可以在后续的页面请求上做些什么。即使除了第一次加载页面的明显问题之外,这是一个糟糕的策略,因为在服务器仍然认为它处于活动状态的同时,用户可能会关闭Javascript。

Graceful degradation/progressive enhancement是这里的关键词。默认情况下,假设您的页面没有任何Javascript处于活动状态并采取相应的行动,即在任何情况下都提供纯HTML。包含Javascript,如果Javascript处于活动状态,它将“升级”该网站的功能。让客户弄清楚Javascript是否在工作,并让它能够在任何情况下工作。

1

恐怕没有好的解决方案。几乎所有的解决方案都涉及到运行脚本来执行检查,而且感觉不正确(至少对我而言)。我建议的最佳解决方案是使用<noscript />标记并重定向到不依赖于JavaScript的其他页面。

7

如果你想阻止你的应用程序的访问,你可以使用这样的事情

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

这里有一个窍门......

假设用户已经JavaScript的阻塞(关闭)。我们把这个代码进入的Index.aspx:

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

如果你得到JS = 1,你知道该用户已启用JS。

所以你可以根据用户有/没有JS生成代码。

另一种方式是生成一些特殊类的内容,例如, <div class="noscript">,然后你运行脚本(jQuery):

$(".noscript").hide(); 
+0

这一个似乎不是一个适当的解决方案。 – 2013-06-19 14:24:37

+0

与此相关的问题是用户可以关闭Javascript并用它们的URL来欺骗它,并且在大页面上JQuery脚本在页面加载之前不会触发(导致用户眼前的东西消失)。 – 2013-08-02 12:12:21

相关问题