• 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中会提示你页面不存在,也是这个原因。

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

    --------------------------------------------------------------------------------------------------------------------------------------------
    顺势而为
  • 相关阅读:
    这些例子很炫,感兴趣的童鞋可以了解一下
    Java经典习题24
    Java经典习题23
    Java经典练习题22
    Java经典习题21
    Java经典习题20
    Java经典练习题19
    Java经典练习题18
    Java经典习题17
    Java经典习题16
  • 原文地址:https://www.cnblogs.com/zhuzhenyu/p/2720477.html
Copyright © 2020-2023  润新知