检查ASP.NET服务器端是否启用了JavaScript。

9

能否从ASP.NET代码中检查客户端浏览器是否启用了JavaScript?

我希望在控件的PreRender或PageLoad上实现这一点,以便我可以更改它们的外观。

如有任何建议、解决方法等,将不胜感激。

3个回答

7

Page.Request.Browser.EcmaScriptVersion将指示ASP.NET认为是正确的。这假设BrowserCaps是正确的。它确实给出了第一次的指示,可能相当接近。

编辑:我最初误解了问题(启用与支持)。您可以使用服务器端的BrowserCaps来筛选那些不支持JavaScript的UserAgent。然后在每个请求上使用一行脚本来确定是否通过cookie启用:

// let the server know JavaScript is enabled via session cookie
document.cookie = "js=1; path=/";

然后在服务器端检测是否存在:

HttpCookie cookie = HttpContext.Current.Request.Cookies.Get("js");
bool js = (cookie != null) && (cookie.Value == "1");

一旦关闭浏览器,该cookie将消失。

7
很抱歉,如果没有进行后续请求,您无法完成此操作。
可以通过在Google上搜索来找到解释,大多数使用AJAX调用或通过一些JavaScript填充隐藏字段,如果禁用了JavaScript,则不会运行。
如果必须这样做,那么我建议您尝试在客户端的第一个请求中执行此操作,并保存一个cookie(或类似的东西),然后在后续请求中检查cookie的值。 这假设用户不经常启用/禁用JavaScript。 您还可以将值存储在会话中。
希望这有所帮助。

我本来希望有更优雅的解决方案,但如果那是唯一可行的方式……我会把它存储在会话变量中,并提供访问器方法来使其更清晰。 - Fermin

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接