检测 ASPX 中 JavaScript 是否已启用






4.60/5 (15投票s)
在 Page_Load 方法中检查浏览器是否启用了 JavaScript。
引言
此代码示例检测当前浏览器是否已启用 JavaScript。
背景
我搜索了一种确定用户网络浏览器是否正在运行 JavaScript 的方法,但发现网上大多数示例仅检测浏览器是否**能够**运行 JavaScript 以及浏览器能够运行的 JavaScript 版本。它无法检测(至少从 C#)JavaScript 是否当前已启用。
使用代码
我最终找到了四个教程,我将其中一些内容组合成一个简单的代码块,可以在 Page_Load()
方法中运行,以查看客户端 Web 浏览器是否启用了 JavaScript。
protected void Page_Load(object sender, EventArgs e)
{
if (Session["JSChecked"] == null)
//JSChecked -indicates if it tried to run the javascript version
{
// prevent infinite loop
Session["JSChecked"] = "Checked";
string path = Request.Url + "?JScript=1";
Page.ClientScript.RegisterStartupScript(this.GetType(), "redirect",
"window.location.href='" + path + "';", true);
}
if (Request.QueryString["JScript"] == null)
Response.Write("JavaScript is not enabled.");
else
Response.Write("JavaScript is enabled.");
}
关注点
最大的困难是,网上关于此类函数的教程大多建议使用以下代码
Response.Write(@"<script language="'javascript'" type='text/jscript'>" +
@" window.location = 'default.aspx?JScript=1'; </script>");
不幸的是,如果浏览器是 Firefox,此代码将无法工作。但是,使用命令
Page.ClientScript.RegisterStartupScript(this.GetType(), "redirect",
"window.location.href='default.aspx?JScript=1';", true);
适用于我测试过的所有浏览器(IE、Firefox、Safari 和 Opera)。