zoukankan      html  css  js  c++  java
  • Response.Write输出JS后CSS失效问题

     使用 Response.Write 输出 JS 后会造成 CSS 样式失效,其主要原因是输出的 JS 被放到了页面的最前面,破坏了 XHTML 的结构。我们可以使用下面两种方法来输出 JS:void MessageBox(string strKey,string strInfo)
    {
        
    if !ClientScript.IsClientScriptBlockRegistered(strKey))
        
    {
            
    string strjs = "alert('" + strInfo + "');";
            ClientScript.RegisterStartupScript(
    this.GetType(), strKey, strjs, true);
        }

    }

    void MessageBox(string strKey,string strInfo)
    {
        
    if !ClientScript.IsClientScriptBlockRegistered(strKey))
        
    {
            
    string strjs = "alert('" + strInfo + "');";
            ClientScript.RegisterClientScriptBlock(
    this.GetType(), strKey, strjs, true);
        }

    }

      .NET1.1 中对应的方法为 Page.RegisterStartupScript 和 Page.RegisterClientScriptBlock。

      这两个方法的作用都是从后台向前台写脚本, 这两个方法唯一的不同之处在于从“何处”发送脚本块。RegisterClientScriptBlock() 在 Web 窗体的开始处(紧接着<form runat="server"> 标识之后)发送脚本块,而 RegisterStartupScript() 在 Web 窗体的结尾处(在 </form> 标识之前)发送脚本块。

      RegisterStartupScript() 用于添加要在加载页面后运行的脚本块,通过这种方法添加的脚本块位于 Web 窗体的结尾处,因为必须在脚本运行前定义脚本要修改的 HTML 元素。也就是说,如果您要使用客户端脚本将焦点设置到文本框,必须确保文本框的 HTML 标记位于设置该文本框的焦点的脚本之前。脚本块包含<script></script>。

      RegisterClientScriptBlock() 方法用于为响应客户端事件而执行的脚本代码。通过此方法发送的脚本块位于 Web 页面的开始处,因为这种方法不要求将脚本块置于所有 HTML 元素之后,即它一般不使用文档内自定义的控件。脚本块不包含<script></script>。

      如果你仅仅是注册一些函数,这两者的效果是一样的。但如果你要注册一些全局的脚本,如定义一些全局变量并赋值,那么它在HTML中的先后位置可能就比较重要,此时就应该用RegisterStartupScript保证脚本能在前面被执行。

  • 相关阅读:
    【题解】直线交点数
    【题解】[TJOI2010] 阅读理解
    清北学堂 2020 国庆J2考前综合强化 Day7
    清北学堂 2020 国庆J2考前综合强化 Day6
    清北学堂 2020 国庆J2考前综合强化 Day5
    清北学堂 2020 国庆J2考前综合强化 Day4
    清北学堂 2020 国庆J2考前综合强化 Day3
    test
    清北学堂 2020 国庆J2考前综合强化 Day2
    清北学堂 2020 国庆J2考前综合强化 Day1
  • 原文地址:https://www.cnblogs.com/xryyforver/p/1508850.html
Copyright © 2011-2022 走看看