65.9K
CodeProject 正在变化。 阅读更多。
Home

检测 ASPX 中 JavaScript 是否已启用

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.60/5 (15投票s)

2008年2月22日

CPOL
viewsIcon

125033

downloadIcon

929

在 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)。

© . All rights reserved.