0

我有一个 aspx 页面,它在检测到客户端的屏幕尺寸后加载了几个图像。我是这样做的:在 jquery 代码中,我首先检测用户屏幕大小,然后根据大小,我进行一些计算来确定要从数据库中获取的图像数量。然后使用 jquery ajax,我调用了一个返回 json 响应的 web 服务。代码获取 json 并创建页面。

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

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

好吧,我不太希望我的问题能得到解决,但我仍然想试一试。可能有人已经有了解决方案。如果您可以就更改/更新逻辑提出意见或建议,那将非常有帮助。

任何帮助将不胜感激。

感谢和问候普拉文

4

2 回答 2

1

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.");
}
于 2012-10-12T10:02:44.253 回答
0

如果启用了 javascript,则制作没有 javascript 的默认版本并重定向到 javascript 版本。如果禁用了javascript,如何重定向?

于 2012-10-12T09:59:39.320 回答