zoukankan      html  css  js  c++  java
  • Page.ClientScript.RegisterStartupScript()方法使用注意问题

    .Net代码在Server端处理数据的时候,如果要采用JS脚本,我们一般都会采用Page.ClientScript.RegisterStartupScript这个方法来为页面注册脚本事件,这个代码我也是一直在使用,没有什么问题。可是最近我用IE8测试页面的时候,发现一旦我在服务器端触发这样的代码,浏览器的左下角总是会有错误提示:

    打开看下究竟发生了什么

    通过这个提示,我们大概可以知道,在Document还没有初始化之前,JS脚本就试图加载DOM才会形成这样的问题,那么我们的代码是怎么写的呢

    /// <summary>
            /// 弹出JavaScript小窗口
            /// </summary>
            /// <param name="js">窗口信息</param>
            public static void Alert(string message, Page page)
            {
                #region
                string js = @"<script type='text/javascript'>
                        jAlert('" + message + "','提示');</script>";
                //HttpContext.Current.Response.Write(js);
                if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "alert"))
                {
                    page.ClientScript.RegisterStartupScript(page.GetType(), "alert", js);
                }
                #endregion
            }

    我们可以看到这是一种和普遍的写法,试试上我也是从网上百度到的,后来又百度了一下,原来需要在这个方法提交前,判断一下浏览器是否已经加载完毕,也就是加一个document.readyState来判断一下,于是代码改为

    /// <summary>
            /// 弹出JavaScript小窗口
            /// </summary>
            /// <param name="js">窗口信息</param>
            public static void Alert(string message, Page page)
            {
                #region
                string js = @"<script type='text/javascript'>
                        $(document).ready(function(){jAlert('" + message + "','提示');});</script>";
                //HttpContext.Current.Response.Write(js);
                if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "alert"))
                {
                    page.ClientScript.RegisterStartupScript(page.GetType(), "alert", js);
                }
                #endregion
            }

    我们再运行一下看这个错误还会不会被抛出来

    我这里的jAlert()方法在加载的时候回去操作DOM,所以造成了这样的一个现象,这样的现象还包括IE8中会提示你页面不存在,也是这个原因。

    看似简单的代码,其实里面还是有很多东西需要我们去注意的。

     

     

  • 相关阅读:
    洛谷 P1226 【模板】快速幂||取余运算 题解
    洛谷 P2678 跳石头 题解
    洛谷 P2615 神奇的幻方 题解
    洛谷 P1083 借教室 题解
    洛谷 P1076 寻宝 题解
    洛谷 UVA10298 Power Strings 题解
    洛谷 P3375 【模板】KMP字符串匹配 题解
    Kafka Shell基本命令
    Mybatis与Hibernate的详细对比
    MyBatis简介
  • 原文地址:https://www.cnblogs.com/weicleer/p/2792430.html
Copyright © 2011-2022 走看看