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保证脚本能在前面被执行。

  • 相关阅读:
    隔离级别 && SNAPSHOT
    多态性&& 虚函数 && 抽象类
    socket编程
    [APIO2015]巴邻旁之桥
    LuoguP3701 「伪模板」主席树
    线段树标记永久化
    [HNOI2015]开店
    NOIP2017划水记
    FFTNTT总结
    [THUWC 2017]在美妙的数学王国中畅游
  • 原文地址:https://www.cnblogs.com/xryyforver/p/1508560.html
Copyright © 2011-2022 走看看