繁体   English   中英

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

[英]How can I execute Javascript function before Page load?

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

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

你有什么建议吗?

Html部分

<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");
}

如果不考虑你想要进入的方向,那么所有名为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

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

javascript可以自己设置cookie。

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

这会解决您的问题吗?

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

另外,看看x0n的评论。 这里有一个参考,有助于理解HTTP请求生命周期

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM