决定是否禁用/启用javascript并执行服务器端代码



我有一个aspx页面,它在检测到客户端的屏幕大小后加载了几个图像。以下是我的操作方法:在jquery代码中,我首先检测用户屏幕的大小,然后根据大小进行一些计算,以决定要从数据库中提取的图像数量。然后,通过使用jquery-ajax,我调用了一个返回json响应的web服务。代码获取json并创建页面。

现在,如果用户禁用了javascript,这种方法就不起作用了。现在我必须在代码背后使用c#代码创建页面。问题是,我无法检测javascript是否从代码隐藏中被禁用(我认为这是不可能的)。我不想在顶部显示一个按钮,上面写着";Javascript在您的浏览器中被禁用。请单击此处显示此页面";。我可以把这个按钮放在noscript标记中。但我不希望用户在看到页面上的图片之前必须点击一个按钮。

我想要的是,如果javascript被禁用,系统应该检测到它,并立即从代码后面运行一个函数。(在这种情况下,页面大小是固定的,不会因用户屏幕而异)我不能使用隐藏字段或cookie来检测它,因为在检测javascript被禁用之前,它们都需要回发。(我们知道js代码不能在任何页面生命周期事件之前运行)。

我不太希望我的问题能得到解决,但我还是想试一试。可能有人已经有了解决方案。如果你能给出你的观点或建议来改变/更新逻辑,那将是非常有帮助的。

如有任何帮助,我们将不胜感激。

感谢和问候Praveen

1.)使用JavaScript设置cookie,然后在后续页面视图中使用服务器端脚本测试该cookie;适当地交付内容。

如何检测JavaScript是否被禁用

2.)您可以使用<noscript>标签

<noscript>标记:可用于为在浏览器中禁用脚本或浏览器不支持客户端脚本的用户提供备用内容。

<noscript>
....
</noscript>

3.)检测ASPX中是否启用了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.");
}

创建不带javascript的默认版本,如果启用了javascript,则重定向到javascript版本。如果javaScript被禁用,如何重定向?

最新更新