详情请点击:365国家紧缺型人才培养计划(简称365计划)和 【技能(TECHNOLOGY)+学历(COLLEGE)】教育(简称TC精英教育)之权威认证
javascript,不管是在前台代码还是后台,总会到关键时发觉javascript确实是一个不可多得的好朋友,接下来给大家介绍几个在使用ASP.NET做例如OA或CRM等常用到的功能,也可以叫做技巧吧。
1、默认初始化网页为屏幕最大化
<script language="javascript"> self.moveTo(0,0); self.resizeTo(screen.availWidth,screen.availHeight); self.focus(); </script> 2、屏蔽鼠标右键功能菜单 <script language="javascript"> if (window.Event) document.captureEvents(Event.MOUSEUP); function nocontextmenu() { event.cancelBubble = true event.returnValue = false; return false; } function norightclick(e) { if (window.Event) { if (e.which == 2 || e.which == 3) return false; } else if (event.button == 2 || event.button == 3) { event.cancelBubble = true event.returnValue = false; return false; } } document.oncontextmenu = nocontextmenu; // for IE5+ document.onmousedown = norightclick; // for all others </script> 3、显示日期格式为:2004年4月21日 星期三 农历 四月廿三 (1)<td width="300"background="../images/banner1.gif" class="small"> <div align="right" style="color:#000000;filter:dropshadow(color=#FFFFFF,offx=1,offy=1,positive=1); WIDTH: 100%; HEIGHT:20pt; FONT-WEIGHT: bold; FONT-SIZE: 9pt;"> <%=Format(today,"yyyy-MM-dd")%> <script language="JavaScript"> <!-- var bsYear; var bsDate; var bsWeek; var arrLen=8; var sValue=0; var dayiy=0; var miy=0; var iyear=0; var dayim=0; var spd=86400;
var year1999="30;29;29;30;29;29;30;29;30;30;30;29"; //354 var year2000="30;30;29;29;30;29;29;30;29;30;30;29"; //354 var year2001="30;30;29;30;29;30;29;29;30;29;30;29;30"; //384 var year2002="30;30;29;30;29;30;29;29;30;29;30;29"; //354 var year2003="30;30;29;30;30;29;30;29;29;30;29;30"; //355 var year2004="29;30;29;30;30;29;30;29;30;29;30;29;30"; //384 var year2005="29;30;29;30;29;30;30;29;30;29;30;29"; //354 var year2006="30;29;30;29;30;30;29;29;30;30;29;29;30";
var month1999="正月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月" var month2001="正月;二月;三月;四月;闰四月;五月;六月;七月;八月;九月;十月;十一月;十二月" var month2004="正月;二月;闰二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月" var month2006="正月;二月;三月;四月;五月;六月;七月;闰七月;八月;九月;十月;十一月;十二月" var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十"; var Ys=new Array(arrLen); Ys[0]=919094400;Ys[1]=949680000;Ys[2]=980265600; Ys[3]=1013443200;Ys[4]=1044028800;Ys[5]=1074700800; Ys[6]=1107878400;Ys[7]=1138464000;
var Yn=new Array(arrLen); //农历年的名称 Yn[0]="己卯年";Yn[1]="庚辰年";Yn[2]="辛巳年"; Yn[3]="壬午年";Yn[4]="癸未年";Yn[5]="甲申年"; Yn[6]="乙酉年";Yn[7]="丙戌年"; var D=new Date(); var yy=D.getYear(); var mm=D.getMonth()+1; var dd=D.getDate(); var ww=D.getDay(); var ss=parseInt(D.getTime() / 1000); if (yy<100) yy="19"+yy; for (i=0;i<arrLen;i++) if (ss>=Ys[i]){ iyear=i; sValue=ss-Ys[i]; //当年的秒数 } dayiy=parseInt(sValue/spd)+1; //当年的天数 var dpm=year1999; if (iyear==1) dpm=year2000; if (iyear==2) dpm=year2001; if (iyear==3) dpm=year2002; if (iyear==4) dpm=year2003; if (iyear==5) dpm=year2004; if (iyear==6) dpm=year2005; if (iyear==7) dpm=year2006; dpm=dpm.split(";"); var Mn=month1999; if (iyear==2) Mn=month2001; if (iyear==5) Mn=month2004; if (iyear==7) Mn=month2006; Mn=Mn.split(";");
var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十"; Dn=Dn.split(";"); dayim=dayiy; var total=new Array(13); total[0]=parseInt(dpm[0]); for (i=1;i<dpm.length-1;i++) total[i]=parseInt(dpm[i])+total[i-1]; for (i=dpm.length-1;i>0;i--) if (dayim>total[i-1]){ dayim=dayim-total[i-1]; miy=i; } bsYear2=Mn[miy]+Dn[dayim-1]; if (ss>=Ys[7]||ss<Ys[0]) bsYear=Yn[7]; document.write(" 农历 "+bsYear2); //--> </script> </div> (2) <script language=JavaScript> today=new Date(); function initArray(){ this.length=initArray.arguments.length for(var i=0;i<this.length;i++) this[i+1]=initArray.arguments[i] } var d=new initArray( "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"); document.write( "<font color=#ffffff style='font-size:10pt;font-family: 宋体'> ", today.getYear(),"年", today.getMonth()+1,"月", today.getDate(),"日", d[today.getDay()+1], "</font>" ); </script> 4、随机选择登陆页面
<script language="javascript">> var url=new Array("index1.htm","index2.htm","index3.htm","index4.htm","index5.htm") pnum=Math.floor(Math.random()*5) location.href=url[pnum] </script>
5、页面不能使用复制与剪切功能(禁止鼠标选取)
把body改为: < body onmousemove="event.returnValue=false;">
6、得到键的keycode代码
把body改为:<body onkeydown=alert(event.keyCode)> 页面热键的设置 当访客按字母A时,弹出加入收藏 <script language="javascript"> function document.onkeydown() { if (event.keyCode == 65) window.external.addfavorite('http://www.51js.com/','无忧脚本'); } </script>
获取热键的keyCode值
<script language=javascript> function keyvalue() { alert(event.keyCode); } document.onkeydown=keyvalue; </script>
alert(event.keyCode);可以改成任意要执行的函数 用if(event.keyCode==113){alert("F2")}等来判断所按的键
使用组合热键
function hotKeyEvent() { //alert(event.keyCode); if(event.ctrlKey &&(event.keyCode==81)) alert("发生"); } 针对Url注入的js代码 <script language="****"> <!-- var url = location.search; var re=/^\?(.*)(select%20|insert%20|delete%20from%20|count\(|drop%20table|update%20truncate%20|asc\(|mid\(|char\(|xp_cmdshell|exec%20master|net%20localgroup%20administrators|\"|net%20user|\'|%20or%20)(.*)$/gi; var e = re.test(url); if(e) { alert("地址中含有非法字符~"); location.href="/error.asp"; } file://--> <script> 关于页面窗口的js函数 <script language="javascript"> window.resizeTo(665,485); window.moveTo((window.screen.width-665)/2,(window.screen.height-485)/2); </script> <body oncontextmenu="return false" ondragstart="return false" onselectstart="return false" onkeydown="return false" scroll="no" onkeydown="return(!(event.keyCode==122&&event.ctrlKey))" onkeydown="return(!(event.shiftKey)&&(event.keyCode==121))" onkeydown="return(!(event.keyCode==116))"> 页面设置上的一些问题 <script language="JavaScript" type="text/JavaScript"> //改变图片大小 function resizepic(thispic) { if(thispic.width>700) thispic.width=700; } //无级缩放图片大小 function bbimg(o) { if(!event.ctrlKey)return true; var zoom=parseInt(o.style.zoom, 10)||100;zoom+=event.wheelDelta/12;if (zoom>0) o.style.zoom=zoom+'%'; return false; } //双击鼠标滚动屏幕的代码 var currentpos,timer; function initialize() { timer=setInterval ("scrollwindow ()",30); } function sc() { clearInterval(timer); } function scrollwindow() { currentpos=document.body.scrollTop; window.scroll(0,++currentpos); if (currentpos !=document.body.scrollTop) sc(); } document.onmousedown=sc document.ondblclick=initialize
//更改字体大小 var status0=''; var curfontsize=10; var curlineheight=18; function fontZoomA(){ if(curfontsize>8){ document.getElementById('fontzoom').style.fontSize=(--curfontsize)+'pt'; document.getElementById('fontzoom').style.lineHeight=(--curlineheight)+'pt'; } } function fontZoomB(){ if(curfontsize<64){ document.getElementById('fontzoom').style.fontSize=(++curfontsize)+'pt'; document.getElementById('fontzoom').style.lineHeight=(++curlineheight)+'pt'; } } </script> </head> javascript网页制作中表单相关特效整理 只能是一些限定的东西 ENTER键可以让光标移到下一个输入框 <input onkeydown="if(event.keyCode==13)event.keyCode=9" >
只能是中文<input onkeyup="value=value.replace(/[ -~]/g,@#@#)" onkeydown="if(event.keyCode==13)event.keyCode=9">
屏蔽输入法<input style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9">
只能输入英文和数字<input onkeyup="value=value.replace(/[\W]/g,@#@#) "onbeforepaste="clipboardData.setData(@#text@#,clipboardData.getData(@#text@#).replace(/[^\d]/g,@#@#))" onkeydown="if(event.keyCode==13)event.keyCode=9">
只能是数字<input onkeyup="value=value.replace(/[^\d]/g,@#@#) "onbeforepaste="clipboardData.setData(@#text@#,clipboardData.getData(@#text@#).replace(/[^\d]/g,@#@#))">
只能显示,不能修改<input readonly value="只能显示,不能修改">
只能是数字,判断按键的值。 <script language=javascript> function onlyNum() { if(!((event.keyCode> =48&&event.keyCode<=57)||(event.keyCode> =96&&event.keyCode<=105)||(event.keyCode==8))) event.returnValue=false; } </script> <input onkeydown="onlyNum();">
附:获取键盘的KeyCode
<html> <head> <script language="javascript"> ns4 = (document.layers) ? true : false; ie4 = (document.all) ? true : false; function keyDown(e){ if(ns4){ var nkey=e.which; var iekey=@#现在是ns浏览器@#; var realkey=String.fromCharCode(e.which); } if(ie4){ var iekey=event.keyCode; var nkey=@#现在是ie浏览器@#; var realkey=String.fromCharCode(event.keyCode); if(event.keyCode==32){realkey=@#\@# 空格\@#@#} if(event.keyCode==13){realkey=@#\@# 回车\@#@#} if(event.keyCode==27){realkey=@#\@# Esc\@#@#} if(event.keyCode==16){realkey=@#\@# Shift\@#@#} if(event.keyCode==17){realkey=@#\@# Ctrl\@#@#} if(event.keyCode==18){realkey=@#\@# Alt\@#@#} } alert(@#ns浏览器中键值:@#+nkey+@#\n@#+@#ie浏览器中键值:@#+iekey+@#\n@#+@#实际键为@#+realkey); } document.onkeydown = keyDown; if(ns4){ document.captureEvents(Event.KEYDOWN);} </script> </head> <body> //javascript Document. <hr> <center> <h3> 请按任意一个键。。。。</h3> </center> </body> </html>
限制网页用键盘
<body onkeydown="alert(@#禁用@#);return false;"> 限制键盘的某个键:body onkeydown="if(event.keyCode==num){alert(@#禁用@#);return false;} 如何获得客户端的ip地址? 方法一: string user_ip; user_ip = Request.ServerVariables.Get("REMOTE_ADDR").ToString(); //<==> user_ip = Request.ServerVariables["REMOTE_ADDR"].ToString(); Response.Write(user_ip);
方法二: Response.Write (Request.UserHostAddress); 或者: Response.Write (Request.UserHostName);
以上有时并不准确,因为有的使用代理服务器,那样的话,取的将是代理服务器的ip地址! 下面是做判断的: if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] == null) Response.Write (Request.ServerVariables["REMOTE_ADDR"].ToString()); else Response.Write (Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString());
请问如何获得连接到服务器的客户端的IP地址? <? function getIp() { $ip = getenv("REMOTE_ADDR"); $ip1 = getenv("HTTP_X_FORWARDED_FOR"); $ip2 = getenv("HTTP_CLIENT_IP"); ($ip1) ? $ip = $ip1 : null ; ($ip2) ? $ip = $ip2 : null ; return $ip; } echo $ip; ?> 当客户端向服务器发了HTTP请求时,可以能过HTTP请求获得客户端信息。ASP。NET中Request对像是HttpRequest类的实例,其常用的属性有: ApplicationPath:获取服务器上应用程序的虚拟根路径。 Cookies:用于得到客户所发送的Cookies集合。 IsAuthenticated:用于指出用户是否验证。 IsSecureConnection:用于指出是否在使用SSL。 Url:用于获取请求URL的信息。 UserHostAddress:用于获取远程客户的IPf 地址。 UserHostName:用于获取远程客户的DNS名称。 ServerVariables:用于取得Web服务器变量的集合。 看到这查,我想已经明白了。 得到远程客户端地址只要一句话就好:Request.UserHostAddress 在ASP。NET中默认的上传文件大小不能超过4M.通过下面的二步,我们来自定义大小: (1)修改:Web.config。添加以下代码: <system.web> <httpRuntime maxRequestLength="4096" executionTimeout="600"> </httpRuntime> </system.web> 其中4096为文件的大小。单位为KB。600为上传文件有效时间,单位为秒。 (2)修改Machine.config。 在%\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config中修改以下代码: <httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true"/> 修改90,和4096就好。 但是在ASP2.0中,没有这些代码。所以,在ASP2.0中只要第一步就好。 测试过。 Cookie加密
Cookie中的数据以文本的形式存在客户端计算机,考虑它的安全性,最好在将数据存入Cookie之前对其进行加密。 加密的方法很多,比较简单一点的有:Base64,md5,sha等,而相对比较复杂一点的有:DES,TripleDES,RC2,Rijndael等。 下面是的代码实现了将数据存入Cookie之前采用散列的算法进行加密. Private void Login_Click(object sender,System EventArgs e) { string Name = NameBox.Text; string Pass = PassBox.Text; Response.Cookies["name"].Value = FormsAuthentication.HashPasswordForStoringInConfigFile(Name, "md5"); Response.Cookies["pass"].Value = FormsAuthentication.HashPasswordForStoringInConfigFile(Pass, "md5"); } 加密的方法很多,使用比较复杂的加密算法,安全性比较高些,但占用服务器资源比较大,会减慢整个网站的访问速度。 所以对Cookie加密在考虑三个方面:1:安全性,2:Cookie容量,3:整个网站的性能。 如何设置不让客户端修改他们的IP地址? 问:能不能不让客户端修改他们的IP地址? 答:可以利用本地策略或基于域的组策略锁定,具体操作: 1、 本地:开始/运行:gpedit.msc。或 2、 域:开始/程序/管理工具/AD用户和计算机/域名上/右键/属性/组策略/默认域的组策略 3、在用户配置/管理模板/网络/网络及拨号连接:禁止访问LAN连接的属性。 说明: 1、 若利用本地策略实现,本地管理员,可以重新设置策略解开。 2、 若利用域策略实现,只是域用户受此限制。本地管理员,不受此限制。 所以应该修改本地管理员的用户名或口令,让用户以非本地管理员身份登录。为了保证用户能安装软件或做其它管理工作,可将其加入本地的Power Users组。
限制datagrid显示的某个字段字数 在datagrid_DataBound()里: string content = e.Item.Cell[0].Text ; if(content.Lenth > MaxLenth) { e.Item.Cell[0].Text = content.Substring(0,MaxLenth) + "..."; e.Item.Cell[0].Attribute["title"] = content; } 1.前台 <asp:TemplateColumn> <ItemStyle HorizontalAlign="Left" Wrap="true"></ItemStyle> <ItemTemplate> <asp:Label runat="server" Text='<%# GetDemand(DataBinder.Eval(Container, "DataItem.demand").ToString())%>'> </asp:Label> </ItemTemplate> </asp:TemplateColumn> 2.后台 protected string GetDemand(string strDemand) { string subDemand = strDemand; //ȡǰ10¸ö×Ö´®£¨Èç¹ûÐèÇ󳤶ÈСÓÚÊ®¸ö£¬Ôòȡԭ´®£© if(subDemand.Length > 10) { subDemand = subDemand.Substring(0,10) + "..."; } string titleDemand = strDemand.Replace("<br/>","\r\n").Replace(" "," "); string HtmlTitle = "<A title=\"" + titleDemand + "\" >" + subDemand + "</A>"; return HtmlTitle; } 鼠标移动到DataGrid某列显示所有文本,可以在DataGrid_DataBound事件中这样写语句: e.Cell[1].ToolTrip = "要显示的文字"; public string MyLeftFunction(string str, int Int) { if (str.Length <= Int) { return str; } else { str = str.Substring(0,Int) + "..."; return str; } } C#加密路径里的参数,保护参数隐私安全 /* *Description:加密路径信息后,输出到Client端 *Auther:天很蓝_崇崇 *Email:yc_chongchong@tom.com *Dates:2005-01-18 *Copyright:ChongChong2008 YiChang HuBei China */ using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Data.SqlClient; using System.Configuration; //导入自定义的类库 using _3Layer.DataLayer.DataCommon; using _3Layer.DataLayer.DataCommon.DataAccess; using Library.ClassLibrary.Crypt.DES; namespace CHONGCHONG.XML public class RenderingXML : System.Web.UI.Page { /// <summary> /// 从数据库预生成XML数据源 /// </summary> private void PreRenderXML() { string strSQL = "select语句略去........................; myDataLayer.Open(); RenderingXml="<?xml version='1.0' encoding='gb2312'?>\r\n"; RenderingXml+="<xml>\r\n"; try { System.Data.SqlClient.SqlDataReader myDR = (SqlDataReader)myDataLayer.ExecuteReader( strSQL ); while(myDR.Read()) { RenderingXml+="<TreeNode id='"+myDR["BoardID"]+"'>\r\n"; RenderingXml+="<NodeText>"+myDR["BoardName"]+"</NodeText>\r\n"; RenderingXml+="<title>"+myDR["Title"]+"</title>\r\n"; RenderingXml+="<NodeUrl>"+EncodeHTML( EncodeParameter( myDR["Link"].ToString() ) )+"</NodeUrl>\r\n"; RenderingXml+="<child>"+myDR["children"]+"</child>\r\n"; RenderingXml+="<target>"+myDR["Target"]+"</target>\r\n"; RenderingXml+="</TreeNode>\r\n"; } } catch(System.Data.SqlClient.SqlException ee) { return ; } finally { myDataLayer.Close() ; } RenderingXml+="</xml>"; byte[] bytResult = Encoding.Default.GetBytes( RenderingXml ) ; Response.ContentType = "text/xml" ; Response.BinaryWrite( bytResult ) ; }
/// <summary> /// Description:加密路径参数 /// </summary> /// <param name="sourParameter"></param> /// <returns></returns> private string EncodeParameter( string sourParameter ) { string startString = String.Empty ; string endString = String.Empty ; StringBuilder destParameter = new StringBuilder() ; if( sourParameter == null || sourParameter.Equals("") ) { destParameter.Append( String.Empty ).ToString() ; } else { //开始分析路径里的?字符 if( sourParameter.IndexOf("?")<0 ) { destParameter.Append( sourParameter ).ToString() ; } else { //以?号分割路径 string[] paramPath = sourParameter.Split( new char[]{'?'} ) ; startString = paramPath[0].ToString() ; endString = paramPath[1].ToString() ; //开始分析路径里的&字符 if(sourParameter.IndexOf("&")<0) { //只有一个参数,用=号分割,直接把NameValue进行Des加密 string[] paramNameValue = endString.Split( new char[]{'='} ) ; string paramName = myDES.Encrypt( paramNameValue[0].ToString() ,myDESKey ) ; string paramValue = myDES.Encrypt( paramNameValue[1].ToString() ,myDESKey ) ; destParameter.Append( startString ).Append("?").Append( paramName ).Append("=").Append( paramValue ) ; } else { //有多个参数,以&号分割?号后面的路径 string[] paramJoin = endString.Split( new char[]{'&'} ) ; destParameter.Append( startString ).Append("?").Append( EncoderNameValue( paramJoin ) ) .ToString() ; } } } return destParameter.ToString() ; }
/// <summary> /// Description:加密路径里的NameValue参数 /// </summary> /// <param name="sourNameValue"></param> /// <returns></returns> private string EncoderNameValue( string[] sourNameValue ) { string[] paramNameValue ; string paramName ; string paramValue ; StringBuilder sb = new StringBuilder() ;
for( int i = 0 ; i <= sourNameValue.Length-1 ; i++ ) { //以=号分割每个NameValue参数 paramNameValue = sourNameValue[i].Split( new char[]{'='} ) ;
//开始对NameValue加密 paramName = myDES.Encrypt( paramNameValue[0].ToString() ,myDESKey ) ;
paramValue = myDES.Encrypt( paramNameValue[1].ToString() ,myDESKey ) ;
//存储加密后的路径字符串 sb.Append( paramName ).Append("=").Append( paramValue ) ;
//是否最后一个NameValue参数,若不是在路基里添加&参数连接符 if( i<sourNameValue.Length ) { sb.Append("&") ; } } return sb.ToString() ; } }
|