在ASP.NET中我们经常需要输出一些JS脚本,比如弹出一个警告窗口,返回到历史页面等JS功能,我看到网上流传得比较广的是马先光写的一个JScript类,这个类基本将经常用到的JS脚本包含了,非常方便,唯一的不足是作者采用的Response.Write(string msg)的办法,这样造成输出的js脚本在<html></html>标签之外,破坏了原有XHTML的结构,所以本人在满足原功能的情况下,对JScript类做了进一步的改善,这个改善采用了重载的办法,增加了一个System.Web.UI.Page类的实例作为参数,不会影响原来的程序代码。
using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Web.UI; /// <summary> /// 一些常用的Js调用 /// 添加新版说明:由于旧版普遍采用Response.Write(string msg)的方式输出js脚本,这种 /// 方式输出的js脚本会在html元素的<html></html>标签之外,破坏了整个xhtml的结构, /// 而新版本则采用ClientScript.RegisterStartupScript(string msg)的方式输出,不会改变xhtml的结构, /// 不会影响执行效果。 /// 为了向下兼容,所以新版本采用了重载的方式,新版本中要求一个System.Web.UI.Page类的实例。 /// 创建时间:2006-9-13 /// 创建者:马先光 /// 新版作者:周公 /// 修改日期:2007-4-17 /// 修改版发布网址: http://blog.csdn.net/zhoufoxcn /// </summary> public class JScript { #region 旧版本 /// <summary> /// 弹出JavaScript小窗口 /// </summary> /// <param name="js"> 窗口信息 </param> public static void Alert( string message) { #region string js = @" <Script language='JavaScript'> alert(' " + message + " ');</Script> " ; HttpContext.Current.Response.Write(js); #endregion } /// <summary> /// 弹出消息框并且转向到新的URL /// </summary> /// <param name="message"> 消息内容 </param> /// <param name="toURL"> 连接地址 </param> public static void AlertAndRedirect( string message, string toURL) { #region string js = " <script language=javascript>alert('{0}');window.location.replace('{1}')</script> " ; HttpContext.Current.Response.Write( string .Format(js, message, toURL)); #endregion } /// <summary> /// 回到历史页面 /// </summary> /// <param name="value"> -1/1 </param> public static void GoHistory( int value) { #region string js = @" <Script language='JavaScript'> history.go({0}); </Script> " ; HttpContext.Current.Response.Write( string .Format(js, value)); #endregion } /// <summary> /// 关闭当前窗口 /// </summary> public static void CloseWindow() { #region string js = @" <Script language='JavaScript'> parent.opener=null;window.close(); </Script> " ; HttpContext.Current.Response.Write(js); HttpContext.Current.Response.End(); #endregion } /// <summary> /// 刷新父窗口 /// </summary> public static void RefreshParent( string url) { #region string js = @" <Script language='JavaScript'> window.opener.location.href=' " + url + " ';window.close();</Script> " ; HttpContext.Current.Response.Write(js); #endregion } /// <summary> /// 刷新打开窗口 /// </summary> public static void RefreshOpener() { #region string js = @" <Script language='JavaScript'> opener.location.reload(); </Script> " ; HttpContext.Current.Response.Write(js); #endregion } /// <summary> /// 打开指定大小的新窗体 /// </summary> /// <param name="url"> 地址 </param> /// <param name="width"> 宽 </param> /// <param name="heigth"> 高 </param> /// <param name="top"> 头位置 </param> /// <param name="left"> 左位置 </param> public static void OpenWebFormSize( string url, int width, int heigth, int top, int left) { #region string js = @" <Script language='JavaScript'>window.open(' " + url + @" ','','height= " + heigth + " ,width= " + width + " ,top= " + top + " ,left= " + left + " ,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');</Script> " ; HttpContext.Current.Response.Write(js); #endregion } /// <summary> /// 转向Url制定的页面 /// </summary> /// <param name="url"> 连接地址 </param> public static void JavaScriptLocationHref( string url) { #region string js = @" <Script language='JavaScript'> window.location.replace('{0}'); </Script> " ; js = string .Format(js, url); HttpContext.Current.Response.Write(js); #endregion } /// <summary> /// 打开指定大小位置的模式对话框 /// </summary> /// <param name="webFormUrl"> 连接地址 </param> /// <param name="width"> 宽 </param> /// <param name="height"> 高 </param> /// <param name="top"> 距离上位置 </param> /// <param name="left"> 距离左位置 </param> public static void ShowModalDialogWindow( string webFormUrl, int width, int height, int top, int left) { #region string features = " dialogWidth: " + width.ToString() + " px " + " ;dialogHeight: " + height.ToString() + " px " + " ;dialogLeft: " + left.ToString() + " px " + " ;dialogTop: " + top.ToString() + " px " + " ;center:yes;help=no;resizable:no;status:no;scroll=yes " ; ShowModalDialogWindow(webFormUrl, features); #endregion } /// <summary> /// 弹出模态窗口 /// </summary> /// <param name="webFormUrl"></param> /// <param name="features"></param> public static void ShowModalDialogWindow( string webFormUrl, string features) { string js = ShowModalDialogJavascript(webFormUrl, features); HttpContext.Current.Response.Write(js); } /// <summary> /// 弹出模态窗口 /// </summary> /// <param name="webFormUrl"></param> /// <param name="features"></param> /// <returns></returns> public static string ShowModalDialogJavascript( string webFormUrl, string features) { #region string js = @" <script language=javascript> showModalDialog(' " + webFormUrl + " ','',' " + features + " ');</script> " ; return js; #endregion } #endregion #region 新版本 /// <summary> /// 弹出JavaScript小窗口 /// </summary> /// <param name="js"> 窗口信息 </param> public static void Alert( string message, Page page) { #region string js = @" <Script language='JavaScript'> alert(' " + message + " ');</Script> " ; // HttpContext.Current.Response.Write(js); if ( ! page.ClientScript.IsStartupScriptRegistered(page.GetType(), " alert " )) { page.ClientScript.RegisterStartupScript(page.GetType(), " alert " , js); } #endregion } /// <summary> /// 弹出消息框并且转向到新的URL /// </summary> /// <param name="message"> 消息内容 </param> /// <param name="toURL"> 连接地址 </param> public static void AlertAndRedirect( string message, string toURL, Page page) { #region string js = " <script language=javascript>alert('{0}');window.location.replace('{1}')</script> " ; // HttpContext.Current.Response.Write(string.Format(js, message, toURL)); if ( ! page.ClientScript.IsStartupScriptRegistered(page.GetType(), " AlertAndRedirect " )) { page.ClientScript.RegisterStartupScript(page.GetType(), " AlertAndRedirect " , string .Format(js, message, toURL)); } #endregion } /// <summary> /// 回到历史页面 /// </summary> /// <param name="value"> -1/1 </param> public static void GoHistory( int value, Page page) { #region string js = @" <Script language='JavaScript'> history.go({0}); </Script> " ; // HttpContext.Current.Response.Write(string.Format(js, value)); if ( ! page.ClientScript.IsStartupScriptRegistered(page.GetType(), " GoHistory " )) { page.ClientScript.RegisterStartupScript(page.GetType(), " GoHistory " , string .Format(js, value)); } #endregion } // // / <summary> // // / 关闭当前窗口 // // / </summary> // public static void CloseWindow() // { // #region // string js = @"<Script language='JavaScript'> // parent.opener=null;window.close(); // </Script>"; // HttpContext.Current.Response.Write(js); // HttpContext.Current.Response.End(); // #endregion // } /// <summary> /// 刷新父窗口 /// </summary> public static void RefreshParent( string url, Page page) { #region string js = @" <Script language='JavaScript'> window.opener.location.href=' " + url + " ';window.close();</Script> " ; // HttpContext.Current.Response.Write(js); if ( ! page.ClientScript.IsStartupScriptRegistered(page.GetType(), " RefreshParent " )) { page.ClientScript.RegisterStartupScript(page.GetType(), " RefreshParent " , js); } #endregion } /// <summary> /// 刷新打开窗口 /// </summary> public static void RefreshOpener(Page page) { #region string js = @" <Script language='JavaScript'> opener.location.reload(); </Script> " ; // HttpContext.Current.Response.Write(js); if ( ! page.ClientScript.IsStartupScriptRegistered(page.GetType(), " RefreshOpener " )) { page.ClientScript.RegisterStartupScript(page.GetType(), " RefreshOpener " , js); } #endregion } /// <summary> /// 打开指定大小的新窗体 /// </summary> /// <param name="url"> 地址 </param> /// <param name="width"> 宽 </param> /// <param name="heigth"> 高 </param> /// <param name="top"> 头位置 </param> /// <param name="left"> 左位置 </param> public static void OpenWebFormSize( string url, int width, int heigth, int top, int left, Page page) { #region string js = @" <Script language='JavaScript'>window.open(' " + url + @" ','','height= " + heigth + " ,width= " + width + " ,top= " + top + " ,left= " + left + " ,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');</Script> " ; // HttpContext.Current.Response.Write(js); if ( ! page.ClientScript.IsStartupScriptRegistered(page.GetType(), " OpenWebFormSize " )) { page.ClientScript.RegisterStartupScript(page.GetType(), " OpenWebFormSize " , js); } #endregion } /// <summary> /// 转向Url制定的页面 /// </summary> /// <param name="url"> 连接地址 </param> public static void JavaScriptLocationHref( string url, Page page) { #region string js = @" <Script language='JavaScript'> window.location.replace('{0}'); </Script> " ; js = string .Format(js, url); // HttpContext.Current.Response.Write(js); if ( ! page.ClientScript.IsStartupScriptRegistered(page.GetType(), " JavaScriptLocationHref " )) { page.ClientScript.RegisterStartupScript(page.GetType(), " JavaScriptLocationHref " , js); } #endregion } /// <summary> /// 打开指定大小位置的模式对话框 /// </summary> /// <param name="webFormUrl"> 连接地址 </param> /// <param name="width"> 宽 </param> /// <param name="height"> 高 </param> /// <param name="top"> 距离上位置 </param> /// <param name="left"> 距离左位置 </param> public static void ShowModalDialogWindow( string webFormUrl, int width, int height, int top, int left, Page page) { #region string features = " dialogWidth: " + width.ToString() + " px " + " ;dialogHeight: " + height.ToString() + " px " + " ;dialogLeft: " + left.ToString() + " px " + " ;dialogTop: " + top.ToString() + " px " + " ;center:yes;help=no;resizable:no;status:no;scroll=yes " ; ShowModalDialogWindow(webFormUrl, features, page); #endregion } /// <summary> /// 弹出模态窗口 /// </summary> /// <param name="webFormUrl"></param> /// <param name="features"></param> public static void ShowModalDialogWindow( string webFormUrl, string features, Page page) { string js = ShowModalDialogJavascript(webFormUrl, features); // HttpContext.Current.Response.Write(js); if ( ! page.ClientScript.IsStartupScriptRegistered(page.GetType(), " ShowModalDialogWindow " )) { page.ClientScript.RegisterStartupScript(page.GetType(), " ShowModalDialogWindow " , js); } } // // / <summary> // // / 弹出模态窗口 // // / </summary> // // / <param name="webFormUrl"></param> // // / <param name="features"></param> // // / <returns></returns> // public static string ShowModalDialogJavascript(string webFormUrl, string features) // { // #region // string js = @"<script language=javascript> // showModalDialog('" + webFormUrl + "','','" + features + "');</script>"; // return js; // #endregion // } #endregion } 本文转自周金桥51CTO博客,原文链接: http://blog.51cto.com/zhoufoxcn/167028,如需转载请自行联系原作者