我不明白ECMAScript是如何工作的。检查MSDN和其他论坛,它没有告诉我们哪个版本或值等于javascrpt。
if (!Request.Browser.JavaScript)
//Do Something.
然而,我收到了一个关于obsolute的警告,并建议我改用ECMAScript。
System.Web.HttpBrowserCapabilities myBrowserCaps = Request.Browser;
if (((System.Web.Configuration.HttpCapabilitiesBase)myBrowserCaps).EcmaScriptVersion.Major < 1)
//Does not have Javascript. Do something.
然而,我尝试了开启/关闭我的javascript。不知怎的,这个功能没有被解雇。我怀疑某些值属于javascript。但是,我无法找到任何与value == javascript相关的内容。
我知道我可以然后使用元标记执行重定向。但我希望所有这些代码都能在服务器上执行。
答案 0 :(得分:2)
首先,请参阅Should I bother to develop for JavaScript disabled? / How important is graceful degradation of JavaScript?。
然后,客户端Javascript仅存在于客户端中,如果关闭,则不会触发任何客户端逻辑来明确检查任何内容。所以你不能知道它,直到客户端从你的页面发送至少一个回复(无论是GET / POST查询还是XMLHTTPRequest) - 也就是说,只有在你发送它们的页面生成的那个用户的第二个请求之后,即使您将页面上的每个链接都作为表单回复,他们也可能永远不会出现,他们可能会使用来自外部来源的网址。从Check if javascript is disabled?链接的CodeProject文章就是这种方法的一个例子。
出于这个原因(并且为了避免努力重复制作脚本和noscript版本 - 过去曾经使用过的做法),最佳实践似乎已经变得使页面和框架与JavaScript无关并且只是警告用户使用<noscript>
,如果页面相关,页面可能无法完全正常运行。
E.g。 Sharepoint就是这样 - 在禁用JS的情况下,在页面顶部出现警告,例如没有滚动条和编辑被完全禁用。 这导致得出结论,ASP.NET控件(SP大量使用)的设计并不是基本显示的功能,而且首先禁用了JS。