0

我不明白 ECMAScript 是如何工作的。检查 MSDN 和其他论坛它没有告诉我们哪个版本或值等于 javascrpt。

if (!Request.Browser.JavaScript)
 //Do Something.

但是,我收到了过时的警告,并建议我改用 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 相关的任何内容。

我知道我可以使用元标记执行重定向。但我希望所有这些代码都在服务器上执行。

4

1 回答 1

2

首先,请参阅我应该为禁用 JavaScript 开发吗?/ JavaScript 的优雅降级有多重要?.

然后,客户端 Javascript 仅存在于客户端中,如果它关闭,则不会触发任何客户端逻辑来显式检查任何内容。因此,在客户端从您的页面发送至少一个回复(无论是 GET/POST 查询还是 XMLHTTPRequest)之前,您无法知道它 - 即仅在该用户的第二个请求之后,由您发送给他们的页面生成,即使您将页面上的每个链接都设为表单回复,如果它们只是潜伏在周围,则可能永远不会发生-它们可能使用来自外部来源的 URL。链接自Check if javascript is disabled 的 CodeProject 文章?是这种方法的一个例子。

出于这个原因(并且为了避免重复制作脚本和 noscript 版本 - 过去看到一些使用的做法),最佳做法似乎已成为使页面和框架与 JavaScript 无关,并且只是警告<noscript>用户如果相关,页面可能无法完全正常运行。

例如,Sharepoint 就是这样做的——在禁用 JS 的情况下,页面顶部会出现警告,例如没有滚动条,并且完全禁用编辑。由此得出的结论是,ASP.NET 控件(SP 大量使用)的设计初衷不是为了超出基本显示功能而首先禁用 JS。

于 2013-11-12T06:29:11.423 回答