如何在页面加载之前执行Javascript函数?

时间:2009-05-20 02:34:49

标签: .net asp.net javascript browser

我正在使用隐藏字段'Isjsenabled'来检测客户端的Javascript是启用还是禁用。如果启用了Javascript,则会触发Javascript函数,并将隐藏字段的值设置为1.

我想检查服务器端Page_load的隐藏值。但问题是在页面加载后Javascript被触发。

你有什么建议吗?

Html Part

<script type="text/javascript">
    $(function() {
        $("#<%= Isjsenabled.ClientID %>").val(1);
    }); 
</script>

<input id="Isjsenabled" runat="server" value ="0"  type="hidden"  />

部分背后的代码

protected void Page_Load(object sender, EventArgs e) {                
    HtmlInputHidden hdn = this.FindControl("Isjsenabled") as HtmlInputHidden;
        if (hdn != null)
            if (hdn.Value != null && hdn.Value == "0")
                Helper.SetCookie("IJE", "0");
            else
                Helper.SetCookie("IJE", "1");
}

4 个答案:

答案 0 :(得分:11)

在不考虑你想要进入的方向的情况下,所有名为NOSCRIPT的浏览器都支持一些使用过的标记。

<noscript>
<img src="http://myserver/notify_no_script.aspx" style="display:none">
</noscript>

正如您所看到的,我们的想法是让浏览器请求图片,但前提是禁用了javascript。此页面可以设置一个会话变量,指出当前客户端没有可供当前会话中所有代码使用的脚本功能。

或者,您可以遵循当前的方法:

<noscript>
<input type="hidden" name="noscript" value="1">
</noscript>
<script><!--
document.writeline('<input type="hidden" name="noscript" value="0">');
//--></script>

希望这有帮助,

-Oisin

答案 1 :(得分:3)

你应该将你的脚本或noscript标题作为一个页面绘制到自身上,然后根据javascript被打开,重定向(通过元标记或通过脚本location.href)到你想去的下一个地方。这将需要两个步骤,但它会得到你正在寻找的结果。您可以在重定向查询中将所需信息传回给自己。

答案 2 :(得分:2)

javascript可以自行设置cookie。

var myDate = new Date()
document.cookie = 'IJE=1; expires=' + myDate.toGMTString()

这可以解决您的问题吗?

答案 3 :(得分:1)

Unobtrusive JavaScript可能会引起关注。允许您的页面优雅地降级将简化开发。最初设计没有JavaScript并增强体验。如果您的应用程序非常需要JavaScript并且绝对需要它才能运行,那么这可能不是一个选项。在这种情况下,使用noscript标记通知您的用户他们需要启用JavaScript是一个好主意。

另外,请看x0n的评论。这里有一个参考,以帮助理解HTTP request life cycle