Response.Write输出JS后C 4000 SS失效问题
2008-02-27 15:29
453 查看
使用 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保证脚本能在前面被执行。
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保证脚本能在前面被执行。
相关文章推荐
- Response.Write输出JS后CSS失效问题
- Response.Write输出JS后CSS失效问题
- Response.Write后页面CSS部分失效的问题
- 通过response的write留输出数据的问题
- Response.Write后css失效问题的解决
- Response.Write("JS Code")后页面样式丢失问题
- Response.Write 输出js和Page.ClientScript.RegisterStartupScript的区别
- Response.Write后css失效问题的解决
- Response.Write后css失效问题的解决
- 一个关于输出的问题(Console.Writeline 和Response.Write的区别)
- [转]Response.Write后css失效问题的解决
- response.binarywrite输出图片乱码问题
- response的write输出问题
- 解决response.write输出脚本后出现页面变形的问题
- Response.Write后css失效问题的解决
- Response.Write后css失效问题的解决
- 解决response.write输出脚本后出现页面变形的问题
- 解决response.write()css失效的问题办法
- 关于用js和attr("selected",true);给select设置选中的值失效问题
- 解决AJAX中使用UpdatePanel后再用Response.Write();等无法弹出对话框问题