自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1)
  • 资源 (13)
  • 收藏
  • 关注

转载 C#正则表达式整理备忘(转)

C#正则表达式整理备忘 有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的《C#字符串和正则表达式参考手册》学习了一些基础的知识,同时也为我在CSDN大概赚了1000分,今天想起来,去找《C#字符串和正则表达式参考手册》时,已经不知所踪了。现在用到正则的时候也比较少,把以前的笔记等整理一下,以志不忘。 (

2010-04-21 13:15:00 254

分布式集群Session共享 简单多tomcat8+redis的session共享实现

分布式集群Session共享 简单多tomcat8+redis的session共享实现

2017-07-11

完整的.net Memcache实例项目

由于memcached高性能,所以可以同时服务于更多的连接,大大提高了系统的并发处理的能力。另外,memcached通常部署在业务逻辑层(前台应用)和存储层(主指数据库)之间,作为数据库和前台应用的数据缓冲,因此可以快速的响应前端的请求,减少对数据库的访问。 官方网站:http://www.danga.com/memcached/

2009-06-03

SQL Server 存储层级数据实现无限级分类,左右值分类

SQL Server 存储层级数据实现无限级分类,非递归存储过程无限级分类,左右值分类

2009-04-09

仿百度分页代码 谷歌分页代码

仿百度分页代码|谷歌分页代码范例,请大家做个参考

2009-03-03

c#创建windows service示例以及在asp.net中如何控制windows service

c#创建windows service示例以及在asp.net中如何控制windows service详细说明文档,分享给大家来一起看看

2009-03-03

轻松消除SQL SERVER重复记录

轻松消除SQL SERVER重复记录,大家一起来看看吧。。。。。。。。。。。。。。。。。。。。。。。。。。。

2009-03-03

兼容FF和IE的JS解析XML实例下载

兼容FF和IE的JS解析XML实例下载,有不好的地方大家共同指正。。。。。

2009-03-03

AspNetPager控件及Demo源码 v7.02

AspNetPager控件及Demo源码 v7.02介绍:<br>asp.net免费分页控件 AspNetPager 7.0.2版的示例项目及源码,使用VS2008开发,可以使用VS2005或VS2008打开查看,打开方式:从VS2005或VS2008文件菜单中选择 打开...站点,然后浏览到示例项目解压后的文件夹即可。<br>注意:该控件只支持.NET Framework 2.0、3.0及3.5版<br>其中AspNetPager702Src为AspNetPager7.02的分页控件源码,App_Data为所用到的数据库文件,App_Code下为数据库连接类<br>AspNetPager的主要功能有:<br>1、支持通过Url进行分页:<br>AspNetPager除提供默认的类似于DataGrid和GridView的PostBack分页方式外,还支持通过Url进行分页,象大多数asp 程序中分页一样, Url分页方式允许用户通过在浏览器地址栏中输入相应的地址即可直接进入指定页面,也可以使搜索引擎搜索到所有分页的页面的内容,因此具有用户友好和搜索引擎友好的优点,关于Url分页与PostBack分页方式的差异,请参考Url与PostBack分页方式的对比。<br>2、支持Url分页方式下的Url重写(UrlRewrite)功能<br>Url重写技术可以使显示给用户的Url不同于实际的Url,Url重写技术被广泛应用于搜索引擎优化(SEO)、网站重组后重定向页面路径以及提供用户友好的Url等方面, AspNetPager支持Url重写技术使您可以自定义分页导航的Url格式,实现Url重写;<br>3、支持使用用户自定义图片做为导航元素:<br>您可以使用自定义的图片文件做为分页控件的导航元素,而不仅仅限于显示文字内容。<br>4、功能强大灵活、使用方便、可定制性强:<br>AspNetPager分页控件的所有导航元素都可以由用户进行单独控制,从6.0版起,AspNetPager支持使用主题(Theme)与皮肤(Skin)统一控件的整体样式,配合asp.net 2.0中的DataSource控件,AspNetPager只需要编写短短几行代码,甚至无需编写任何代码,只需设置几个属性就可以实现分页功能。<br>5、增强的 Visual Studio 2005/2008设计时支持<br>增强的设计时支持使控件在设计时更加直观,易于使用,开发快捷方便。<br>6、兼容IE6.0+及FireFox 1.5+等浏览器<br>7、丰富而完整的控件文档和示例项目:<br>控件附带的完整的帮助文档及示例项目能够帮助您快速上手,熟悉AspNetPager控件的使用,您还可以通过给作者留言以及论坛提问等方式解决控件使用中遇到的问题。<br><br>Demo的主要功能有:<br>基本功能<br>分页按钮属性效果<br>使用自定义信息区<br>居中当前页索引按钮<br>Repeater分页<br>DataList分页<br>Url分页<br>使用Url重写技术<br>Url逆向分页<br>N层结构应用<br>使用XML文件数据源<br>图片浏览示例<br>使用AccessDataSource<br>使用SqlDataSource<br>使用ObjectDataSource<br>自定义数据呈现逻辑<br>使用图片按钮<br>查询结果分页<br>查询结果Url分页<br>克隆属性及事件<br>页索引输入/选择框<br>自定义导航按钮<br>在用户控件中实现分页<br>Asp.net Ajax支持<br>

2008-06-29

XML检索技术研究,XML全攻略

XML检索技术研究XML检索技术研究XML检索技术研究

2008-06-21

Microsoft 最新的 SQL+Helper.rar

Microsoft 最新的 SQL+Helper SQLHelper

2008-06-15

ddl语言自定义数据库字段

ddl语言自定义数据库字段<br><!--#include virtual="/public/back_top.asp"--><br><html><br><head><br><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><br><link href="member/css/common.css" rel="stylesheet" type="text/css"><br></head><br> <body> <br> <div style="margin-top:15px;"><br> <%<br> sFileName = "alter_manage.asp"<br> tableName = "C_alter"<br> tableName2 = "product"<br> action = Trim(Request.QueryString("action"))<br> %><br> <br> <%<br> Select Case action<br> case ""<br> Call ShowContent()<br> case "add"<br> Call add()<br> case "addsave"<br> Call addsave()<br> case "modify"<br> Call modify()<br> case "modifysave"<br> Call modifysave()<br> case "delall"<br> Call delall()<br> End Select<br> %><br> <br> <%<br> Sub ShowContent()<br> Call gRsClose()<br> sSql = "select * from view_alter"<br> <br> oRs.Open sSql,oConn,1,1<br> <br> %><br> <table width="98%" align=center cellpadding="3" cellspacing=1 bgcolor="#cccccc"><br> <tbody><br> <Form method="post" id="form1" name="form1"><br> <tr bgcolor='#efefef' height='20'><td colspan="5" align='center' style='font-weight:bold;'>字 段 信 息 管 理</td><br> <td align='center' style='font-weight:bold;'><a href="<%=sFileName%>?action=add">添加</a></td><br> </tr><br> <tr bgcolor='#FCFCFC' height='20'><br> <td width="5%" align="center">选择</td><br> <td width="16%" align="center">产品类别</td><br> <td width="14%" align="center">字段类型</td><br> <td width="20%" align="center">字段名称</td><br> <td width="35%" align="center">字段意义</td><br> <td width="10%" align="center">操作</td><br> </tr><br> <%<br> do while not oRs.eof and not oRs.bof <br> select case oRs("a_type")<br> case "nvarchar(255)"<br> a_type = "文本类型"<br> case "int"<br> a_type = "整数类型"<br> case "float"<br> a_type = "浮点类型"<br> case else<br> a_type = "未知类型"<br> end select<br> %><br> <tr bgcolor='#ffffff' height='20'><br> <td width="5%" align="center"><%Response.Write("<input type='checkbox' id='checkzi' name='checkzi' value='" & oRs("a_id") & "'>" & vbCrlf)%></td><br> <td width="16%" align="center"><%Response.Write(oRs("c_name"))%></td><br> <td width="14%" align="center"><%Response.Write(a_type)%></td><br> <td width="20%" align="center"><%Response.Write(oRs("a_name"))%></td><br> <td width="35%" align="center"><%Response.Write(oRs("a_detail"))%></td><br> <td width="10%" align="center"><a href="<%=sFileName%>?action=delall&checkzi=<%=oRs("a_id")%>">删除</a> <a href="<%=sFileName%>?action=modify&a_id=<%=oRs("a_id")%>">修改</a> </td><br> </tr><br> <br> <br> <%<br> oRs.movenext<br> loop<br> %><br> <tr bgcolor='#ffffff' height='20'><br> <td colspan="6" align="center"><br> <%<br> Response.Write("<input type='checkbox' id='checkall' name='checkall' onclick='selectAll();'><font color='#ff0000'><a style='cursor:hand;'>全/反选</a></font>" & vbCrlf)<br> Response.Write("<input type='button' value='删除所选' class='input_submit' onClick=""checkSelect('" & sFileName & "','?action=delall');"">" & vbCrlf)<br> %><br> </td><br> </tr><br> </form><br> </tbody><br> </table><br> <%<br> Call gRsClose()<br> End Sub<br> %><br> <br> <br> <%<br> Sub add()<br> %><br> <Script Language=JavaScript><br> function doSubmit(){<br> if(parseInt(document.getElementById("a_classid").options[document.getElementById("a_classid").selectedIndex].value)==0)<br> {<br> alert("请选择产品类型!");<br> return false;<br> }<br> <br> if(parseInt(document.getElementById("a_type").options[document.getElementById("a_type").selectedIndex].value)==0)<br> {<br> alert("请选择字段类型!");<br> return false;<br> }<br> if(document.getElementById("a_name").value=="")<br> {<br> alert("字段名称不能为空!");<br> document.getElementById("a_name").select();<br> return false;<br> } <br> <br> if(document.getElementById("a_detail").value=="")<br> {<br> alert("请填写该字段的意义!");<br> document.getElementById("a_detail").select();<br> return false;<br> }<br> <br> }<br> </script><br> <table width="58%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#DEDFDE"><br> <form name="myform" method="post" action="<%=sFileName%>?action=addsave" onSubmit="return doSubmit();"><br> <input type="hidden" name="Action" value="AddSave"><br> <tr><br> <td colspan="4" bgcolor="#eeeeee"><div align="center"><strong>字 段 信 息 <br> 添 加</strong></div></td><br> </tr><br> <tr><br> <td bgcolor="#FFFFFF">选择类别:</td><br> <td width="580" colspan="3" nowrap bgcolor="#FFFFFF"><%=gMakeClassSelect("a_classid","p_class",0)%></td><br> </tr><br> <tr><br> <td nowrap bgcolor="#FFFFFF">字段类型:</td><br> <td colspan="3" nowrap bgcolor="#FFFFFF"><label><br> <select name="a_type" class="INPUT" id="a_type"><br> <option value="0" selected>请您选择类型</option><br> <option value="int">整数型</option><br> <option value="nvarchar(255)">文本型</option><br> <option value="float">浮点型</option><br> </select><br> </label></td><br> </tr><br> <tr><br> <td nowrap bgcolor="#FFFFFF">字段名称:</td><br> <td colspan="3" nowrap bgcolor="#FFFFFF"><input name="a_name" type="text" id="a_name" size="80" maxlength="50" class="input_text" > </td><br> </tr><br> <tr><br> <td bgcolor="#FFFFFF">字段意义:</td><br> <td colspan="3" nowrap bgcolor="#FFFFFF"><input name="a_detail" type="text" id="a_detail" size="80" maxlength="50" class="input_text" ></td><br> </tr><br> <br> <tr bgcolor="#efefef" height="30"><br> <td colspan="4" align="center"><br> <input type="submit" name="Submit" value=" 提 交 " class="input_submit" ><br> <input type="reset" name="Submit" value="重 置" class="input_submit"><br> </td><br> </tr><br> </form><br> </table><br> <%<br> End Sub<br> %><br> <br> <br> <%<br> Sub addsave()<br> a_classid = GetSafeStr(Trim(Request.Form("a_classid")))<br> a_name = GetSafeStr(Trim(Request.Form("a_name")))<br> a_detail = GetSafeStr(Trim(Request.Form("a_detail")))<br> a_type = GetSafeStr(Trim(Request.Form("a_type")))<br> a_regtime = now() <br> '判断主表中要添加的字段是否存在<br> eSql = "select * from syscolumns where id=object_id('"& tableName2 &"') and name='"& a_name &"'"<br> Call gRsClose() <br> oRs.Open eSql,oConn,1,3<br> if not oRs.EOF then<br> Call ErrorMsg(sFileName,"主表中字段已经存在在,三秒后返回",1)<br> end if<br> Call gRsClose() <br> <br> '将字段相关信息添加到从表<br> sSql = "select * from "& tableName &" where 1=1"<br> Call gRsClose() <br> oRs.Open sSql,oConn,1,3<br> oRs.AddNew()<br> oRs("a_classid") = a_classid<br> oRs("a_name") = a_name<br> oRs("a_detail") = a_detail<br> oRs("a_type") = a_type<br> oRs("a_regtime") = a_regtime<br> oRs.Update()<br> <br> '添加字段<br> <br> oConn.Execute("ALTER TABLE "& tableName2 &" ADD "& a_name &" "& a_type &"")<br> Call ErrorMsg(sFileName,"添加字段成功,三秒后返回",1)<br> Call gRsClose() <br> End Sub<br> %><br> <br> <br> <br> <%<br> Sub modify()<br> %><br> <Script Language=JavaScript><br> function doSubmit(){<br> if(parseInt(document.getElementById("a_classid").options[document.getElementById("a_classid").selectedIndex].value)==0)<br> {<br> alert("请选择产品类型!");<br> return false;<br> }<br> <br> if(parseInt(document.getElementById("a_type").options[document.getElementById("a_type").selectedIndex].value)==0)<br> {<br> alert("请选择字段类型!");<br> return false;<br> }<br> if(document.getElementById("a_name").value=="")<br> {<br> alert("字段名称不能为空!");<br> document.getElementById("a_name").select();<br> return false;<br> } <br> <br> if(document.getElementById("a_detail").value=="")<br> {<br> alert("请填写该字段的意义!");<br> document.getElementById("a_detail").select();<br> return false;<br> }<br> <br> }<br> </script><br> <%<br> Call gRsClose()<br> a_id = Trim(Request.QueryString("a_id"))<br> sSql = "select * from view_alter where a_id = "& a_id<br> oRs.Open sSql,oConn,1,1<br> If not oRs.eof and not oRs.bof Then<br> a_classid = oRs("a_classid")<br> a_name = oRs("a_name")<br> a_detail = oRs("a_detail")<br> a_type = oRs("a_type")<br> End If<br> Call gRsClose()<br> %><br> <table width="58%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#DEDFDE"><br> <form name="myform" method="post" action="<%=sFileName%>?action=modifysave&a_id=<%=a_id%>" onSubmit="return doSubmit();"><br> <input type="hidden" name="Action" value="AddSave"><br> <tr><br> <td colspan="4" bgcolor="#eeeeee"><div align="center"><strong>字 段 信 息 <br> 添 加</strong></div></td><br> </tr><br> <tr><br> <td bgcolor="#FFFFFF">选择类别:</td><br> <td width="580" colspan="3" nowrap bgcolor="#FFFFFF"><%=gMakeClassSelect("a_classid","p_class",a_classid)%></td><br> </tr><br> <tr><br> <td nowrap bgcolor="#FFFFFF">字段类型:</td><br> <td colspan="3" nowrap bgcolor="#FFFFFF"><label><br> <select name="a_type" class="INPUT" id="a_type"><br> <option value="0" <%If a_type="" Then Response.Write("selected")%>>请您选择类型</option><br> <option value="int" <%If a_type="int" Then Response.Write("selected")%>>整数型</option><br> <option value="nvarchar(255)" <%If a_type="nvarchar(255)" Then Response.Write("selected")%>>文本型</option><br> <option value="float" <%If a_type="float" Then Response.Write("selected")%>>浮点型</option><br> </select><br> </label></td><br> </tr><br> <tr><br> <td nowrap bgcolor="#FFFFFF">字段名称:</td><br> <td colspan="3" nowrap bgcolor="#FFFFFF"><input name="a_name" type="text" class="input_text" id="a_name" value="<%=a_name%>" size="80" maxlength="50" > </td><br> </tr><br> <tr><br> <td bgcolor="#FFFFFF">字段意义:</td><br> <td colspan="3" nowrap bgcolor="#FFFFFF"><input name="a_detail" type="text" class="input_text" id="a_detail" value="<%=a_detail%>" size="80" maxlength="50" ></td><br> </tr><br> <br> <tr bgcolor="#efefef" height="30"><br> <td colspan="4" align="center"><br> <input type="submit" name="Submit" value=" 修 改 " class="input_submit" ><br> <input type="reset" name="Submit" value="重 置" class="input_submit"><br> </td><br> </tr><br> </form><br> </table><br> <%<br> End Sub<br> %><br> <br> <%<br> Sub modifysave()<br> a_classid = GetSafeStr(Trim(Request.Form("a_classid")))<br> a_name = GetSafeStr(Trim(Request.Form("a_name")))<br> a_detail = GetSafeStr(Trim(Request.Form("a_detail")))<br> a_type = GetSafeStr(Trim(Request.Form("a_type")))<br> a_regtime = now()<br> a_id = Trim(Request.QueryString("a_id"))<br> <br> <br> '将字段相关信息添加到从表<br> sSql = "select * from "& tableName &" where a_id = "& a_id <br> Call gRsClose() <br> oRs.Open sSql,oConn,1,3<br> <br> aname = oRs("a_name")<br> atype = oRs("a_type")<br> on error resume next<br> oRs("a_classid") = a_classid<br> '判断主表中是否有相同的字段(保持主从表中的数据一致)<br> set rs1=oConn.Execute("select 1 from syscolumns where id=object_id('"& tableName2 &"') and name='"& a_name &"'")<br> If rs1.eof and rs1.bof Then<br> oRs("a_name") = a_name<br> End If<br> rs1.close()<br> oRs("a_detail") = a_detail<br> oRs("a_type") = a_type<br> oRs.Update()<br> <br> If a_name<>aname Then<br> '修改字段名称(判断主表中是否有相同的字段)<br> oConn.Execute("if not exists(select 1 from syscolumns where id=object_id('"& tableName2 &"') and name='"& a_name &"') EXEC sp_rename '"& tableName2 &".["& aname &"]', '"& a_name &"', 'COLUMN'")<br> End If<br> If a_type<>atype Then<br> '修改字段类型<br> oConn.Execute("ALTER TABLE "& tableName2 &" ALTER COLUMN "& a_name &" "& a_type &"")<br> End If<br> <br> Call ErrorMsg(sFileName,"修改字段成功,三秒后返回",1)<br> Call gRsClose()<br> End Sub<br> %><br> <br> <%<br> Sub delall()<br> checkzi = Trim(Request("checkzi"))<br> If checkzi <> "" Then<br> <br> Dim z1<br> z1 = tableName<br> Dim temp_id,last_id<br> last_id="("<br> temp_id = Split(Request("checkzi"),",")<br> <br> For i=0 To UBound(temp_id)<br> last_id = last_id & Trim(temp_id(i)) & ","<br> Next<br> last_id = Left(last_id,Len(last_id)-1)<br> last_id = last_id & ")"<br> 'last_id为最终要删除的记录ID<br> <br> '取出要删除的对应字段<br> sSql = "select a_name from "& z1 &" where a_id in " & last_id<br> Call gRsClose()<br> oRs.Open sSql,oConn,1,1<br> dim a_names<br> a_names = ""<br> jj=1<br> do while not oRs.eof and not oRs.bof<br> If jj <> oRs.recordcount Then<br> a_names = a_names & oRs("a_name") &","<br> Else<br> a_names = a_names & oRs("a_name")<br> End If<br> oRs.movenext<br> jj = jj + 1<br> loop<br> Call gRsClose()<br> <br> '删除主表对应字段<br> a_name = Split(a_names,",")<br> for i=0 to Ubound(a_name)<br> oConn.Execute("ALTER TABLE "& tableName2 &" DROP COLUMN "& a_name(i) &"")<br> next<br> <br> '删除从表中字段的意义信息<br> sSql = "delete from " & z1 & " where a_id in " & last_id<br> oConn.Execute(sSql)<br> Call ErrorMsg(sFileName,"成功删除所选记录,三秒后将返回……",1)<br> End If<br> End Sub<br> %><br> </div><br> </body><br></html><br><!--#include virtual="/public/back_bottom.asp"-->

2007-10-14

SQL函数

SQL SERVER 的函数<br>1.字符串函数 <br>长度与分析用 <br>datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格 <br>substring(expression,start,length) 不多说了,取子串 <br>right(char_expr,int_expr) 返回字符串右边int_expr个字符 <br>字符操作类 <br>upper(char_expr) 转为大写 <br>lower(char_expr) 转为小写 <br>space(int_expr) 生成int_expr个空格 <br>replicate(char_expr,int_expr)复制字符串int_expr次 <br>reverse(char_expr) 反转字符串 <br>stuff(char_expr1,start,length,char_expr2) 将字符串char_expr1中的从 start开始的length个字符用char_expr2代替 <br>ltrim(char_expr) rtrim(char_expr) 取掉空格 <br>ascii(char) char(ascii) 两函数对应,取ascii码,根据ascii吗取字符 <br>字符串查找 <br>charindex(char_expr,expression) 返回char_expr的起始位置 <br>patindex("%pattern%",expression) 返回指定模式的起始位置,否则为0 <br>2.数学函数 <br>abs(numeric_expr) 求绝对值 <br>ceiling(numeric_expr) 取大于等于指定值的最小整数 <br>exp(float_expr) 取指数 floor(numeric_expr) 小于等于指定值得最大整数 <br>pi() 3.1415926......... <br>power(numeric_expr,power) 返回power次方 <br>rand([int_expr]) 随机数产生器 <br>round(numeric_expr,int_expr) 安int_expr规定的精度四舍五入 <br>sign(int_expr) 根据正数,0,负数,,返回+1,0,-1 <br>sqrt(float_expr) 平方根 <br>3.日期函数 <br>getdate() 返回日期 <br>datename(datepart,date_expr) 返回名称如 June <br>datepart(datepart,date_expr) 取日期一部份 <br>datediff(datepart,date_expr1.dateexpr2) 日期差 <br>dateadd(datepart,number,date_expr) 返回日期加上 number <br>上述函数中datepart的 写法 取值和意义 <br>yy 1753-9999 年份 <br>qq 1-4 刻 <br>mm 1-12 月 <br>dy 1-366 日 <br>dd 1-31 日 <br>wk 1-54 周 <br>dw 1-7 周几 <br>hh 0-23 小时 <br>mi 0-59 分钟 <br>ss 0-59 秒 <br>ms 0-999 毫秒 <br>日期转换 convert() <br>4.系统函数 <br>suser_name() 用户登录名 <br>user_name() 用户在数据库中的名字 user 用户在数据库中的名字 <br>show_role() 对当前用户起作用的规则 <br>db_name() 数据库名 <br>object_name(obj_id) 数据库对象名 <br>col_name(obj_id,col_id) 列名 <br>col_length(objname,colname) 列长度 <br>valid_name(char_expr) 是否是有效标识符

2007-10-14

新浪推荐浮动广告

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br><html xmlns="http://www.w3.org/1999/xhtml"><br><head><br><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><br><title>test</title><br></head><br><body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0"><br><table height=1000><br><tr><td>dddd</td></tr><br></table><br></body><br></html><br><br><script><br><!--[346,1,680] published at 2006-12-26 13:38:23 from #237 by 814--><br>/**---------------------------------------------------------------------------<br>* browser determine;<br>*/<br>{<br> <br> var ua = navigator.userAgent;<br> var $IE = (navigator.appName == "Microsoft Internet Explorer");<br> var $IE5 = $IE && (ua.indexOf('MSIE 5') != -1);<br> var $IE5_0 = $IE && (ua.indexOf('MSIE 5.0') != -1);<br> var $Gecko = ua.indexOf('Gecko') != -1;<br> var $Safari = ua.indexOf('Safari') != -1;<br> var $Opera = ua.indexOf('Opera') != -1;<br> var $Mac = ua.indexOf('Mac') != -1;<br> var $NS7 = ua.indexOf('Netscape/7') != -1;<br> var $NS71 = ua.indexOf('Netscape/7.1') != -1;<br> <br> if ($Opera) {<br> $IE = true;<br> $Gecko = false;<br> $Safari = false;<br> }<br> if ($IE5) {<br> $IE = true;<br> $Gecko = false;<br> $Safari = false;<br> }<br>}<br>function $_t(root,tag,id){<br> var ar=root.getElementsByTagName(tag);<br> for (var i=0;i<ar.length;i++){<br> if (ar[i].id==id) return ar[i];<br> }<br> return null;<br>}<br>function _(root){<br> <br> var ids=arguments;<br> var i0=0;<br> <br> if (typeof(root) == 'string') root = document;<br> else i0=1;<br> <br> for (var i=i0;i<ids.length;i++){<br> var s=root.getElementsByTagName("*");<br> <br> var has=false;<br> for (var j=0;j<s.length;j++){<br> if (s[j].id==ids[i]){<br> root=s[j];<br> has=true;<br> break;<br> }<br> }<br> if (!has) return null;<br> }<br> return root;<br>}<br>//util<br><br><br>function $dele(o,fn,rv){<br> <br> var r = function (){<br> <br> var s=arguments.callee;<br> <br> var args = [];<br> for (var i=0;i<s.length;i++) args[i]=s[i];<br> var argStr = args.join(",");<br> if (argStr.length > 0) argStr=","+argStr;<br> <br> var callStr="s.thiz[s.fn]("+argStr+")";<br> var v=eval(callStr);<br> <br> <br> if (s.rv!=null) {<br> return s.rv;<br> } else {<br> return v;<br> }<br> }<br> <br> r.thiz=o;<br> r.fn=fn;<br> r.rv=rv;<br> <br> return r;<br>}<br><br>function $ge(e){<br> if (e!=null) return e;<br> if ($IE) {<br> return window.event;<br> } else return e;<br>}<br><br>/**<br>* get event for a element;<br>*/<br>function $gte(e,ev){<br> if (!e.getElementById) e=e.ownerDocument;<br> if ($IE) {<br> return ev!=null ? ev : e.parentWindow.event;<br> } else {<br> return ev;<br> throw new Error("this method can only execute in IE");<br> }<br>}<br>function $addEL(n,e,l,b){<br> <br> if ($IE){<br> if (n["$__listener_"+e]==null){<br> var lst=function (e){<br> <br> var f=arguments.callee;<br> var ar=f.fList;<br> <br> e=$ge(e);<br> for (var i=0;i<ar.length;i++){ <br> ar[i](e);<br> }<br> }<br> lst.fList=[]; <br> n["$__listener_"+e]=lst;<br> n["on"+e]=n["$__listener_"+e];<br> <br> }<br> var fList=n["$__listener_"+e].fList;<br> fList[fList.length]=l;<br> <br> } else {<br> n.addEventListener(e,l,b);<br> }<br>}<br>function $cancelEvent (e) {<br> if ($IE) {<br> e.returnValue = false;<br> e.cancelBubble = true;<br> } else<br> e.preventDefault();<br>};<br>function $cpAttr(o,p){<br> for (var i in p){<br> var s=p[i];<br> o[i]=s;<br> }<br> return o;<br>}<br>function $getValue(v,d){<br> return v==null ? d : v;<br>}<br>var $gv=$getValue;<br><br>var $dom={<br> parseInt : function(s) {<br> if (s == null || s == '' || typeof(s)=='undefined')<br> return 0;<br><br> return parseInt(s);<br> },<br> getClientSize : function(n){<br> if ($IE){<br> //ts("this is ie");<br> var s= {x:n.clientLeft,y:n.clientTop};<br> s.l=s.x;<br> s.t=s.y;<br> s.r=n.clientRight;<br> s.b=n.clientBottom;<br> <br> s.w=n.clientWidth;<br> s.h=n.clientHeight;<br> <br> //tr("calculated client size");<br> <br> return s;<br> } else {<br> var t=n.style;<br> if (t.borderLeftWidth.length==0 || t.borderTopWidth.length==0 || t.borderRightWidth.length==0 || t.borderBottomWidth.length==0){<br> <br> var l=n.offsetWidth;<br> t.borderLeftWidth="0px";<br> l-=n.offsetWidth;<br> <br> var r=n.offsetWidth;<br> t.borderRightWidth="0px";<br> r-=n.offsetWidth;<br> <br> var o=n.offsetHeight;<br> t.borderTopWidth="0px";<br> o-=n.offsetHeight;<br> <br> var b=n.offsetHeight;<br> t.borderBottomWidth="0px";<br> b-=n.offsetHeight;<br> <br> t.borderLeftWidth=l+"px";<br> t.borderTopWidth=o+"px";<br> t.borderRightWidth=r+"px";<br> t.borderBottomWidth=b+"px";<br> <br> var s={l:l,r:r,t:o,b:b,x:l,y:o};<br> <br> <br> return s;<br> } else {<br> var s= {<br> x: this.parseInt(n.style.borderLeftWidth),<br> y: this.parseInt(n.style.borderTopWidth),<br> r: this.parseInt(n.style.borderRightWidth),<br> b: this.parseInt(n.style.borderBottomWidth)<br> };<br> s.l=s.x;<br> s.t=s.y;<br> return s;<br> }<br> }<br> },<br> <br> <br> <br> getSize : function (n,withMargin){<br> var c={<br> x : n.offsetWidth != null ? n.offsetWidth : 0,<br> y : n.offsetHeight != null ? n.offsetHeight : 0<br> };<br> <br> //c.x=this.parseInt(c.x);<br> //c.y=this.parseInt(c.y);<br> <br> //tr("get size for : "+n.id);<br> //tra(c);<br> if (withMargin) {<br> var m=this.getMargin(n);<br> c.x+=m.l+m.r;<br> c.y+=m.t+m.b;<br> }<br> //tra(m);<br> //tr("get size for : "+n.id);<br> //tra(c);<br> return c; <br> },<br> <br> setSize : function(elmt,x,y,withMargin){<br> //tf("$dom::setSize");<br> //if (elmt==undefined || elmt.style.display=="none") return;<br> if ($IE){<br> if (withMargin){ <br> var m=this.getMargin(elmt);<br> x-=m.l+m.r;<br> y-=m.t+m.b; <br> } <br> elmt.style.width=x; <br> elmt.style.height=y; <br> } else {<br> var clientSize=this.getClientSize(elmt);<br> var dx=clientSize.l+clientSize.r;<br> <br> var dy=clientSize.t+clientSize.b;<br> <br> elmt.style.width=x-dx+"px";<br> elmt.style.height=y-dy+"px";<br> }<br> },<br> <br> /**<br> * get the context position relative to its parent.<br> */<br> getPosition : function (elmt,withMargin){<br> var c;<br> <br> c={<br> x:elmt.offsetLeft,<br> y:elmt.offsetTop<br> };<br> //c.x=this.parseInt(c.x);<br> //c.y=this.parseInt(c.y);<br> if (withMargin){<br> var m=this.getMargin(elmt);<br> c.x-=m.l;<br> c.y-=m.t;<br> }<br> <br> return c;<br> },<br> setPosition : function (elmt,x,y,withMargin){<br> //tf("$dom::setPosition");<br> if (withMargin){<br> //var m=this.getMargin(elmt);<br> //x-=m.l;<br> //y-=m.t;<br> } <br> elmt.style.left=x+"px";<br> elmt.style.top=y+"px";<br> },<br> <br> <br> setAlpha : function (n,a){<br> return;<br> n.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+a*100+");";<br> n.style.opacity = a;<br> n.style.MozOpacity = a;<br> }<br> <br>}<br>var $motion={<br> smooth : function (s, e, t){<br> if (t>1) t=1;<br> return (e - s) * t + s;<br> }<br>}<br><br>// this is a default config object.<br>/*<br>var $config={<br> width : 300,<br> height : 200,<br> bottom : 0,<br> right : 10,<br> display : true,<br> contentUrl : "http://bbs.sina.com.cn/tuijian/gundong.html",<br> time : {<br> slideIn : 10,<br> hold : 10,<br> slideOut : 10<br> }<br>}<br>*/<br><br>/**<br>* PopUp class used to pop a message up.<br>* Usage : <br>* var pp = new PopUp(id, popup_config_obj);<br>* pp.create();<br>* ....<br>* pp.show();<br>*/<br>function PopUp(id, config){<br> this.id=id;<br> <br> var c = this.config = config;<br> c.width = $gv(c.width,300);<br> c.height = $gv(c.height,200);<br> c.bottom = $gv(c.bottom,0);<br> c.right = $gv(c.right,20);<br> c.display = $gv(c.display,true);<br> c.contentUrl= $gv(c.contentUrl,"");<br> c.motionFunc= $gv(c.motionFunc,$motion.smooth);<br> c.position = {x:0,y:0};<br> <br> var t=c.time;<br> t.slideIn = $gv(t.slideIn,10);<br> t.hold = $gv(t.hold,10);<br> t.slideOut = $gv(t.slideOut,10);<br> <br> t.slideIn *= 1000;<br> t.hold *= 1000;<br> t.slideOut *= 1000;<br> <br> this.container = document.body;<br> this.popup = null;<br> this.content = null;<br> this.switchButton = null;<br> <br> this.moveTargetPosition = 0;<br> this.startMoveTime = null;<br> this.startPosition = null;<br> <br> this.status = PopUp.STOP;<br> this.intervalHandle = null;<br> <br> this.mm = "max";<br> <br> this.imgMin = "http://image2.sina.com.cn/blog/http/blog.sina.com.cn/m/U1589P346T8D8972F73DT20061009105226.gif";<br> this.imgMax = "http://image2.sina.com.cn/blog/http/blog.sina.com.cn/m/U1589P346T8D8972F19DT20061009105226.gif";<br>}<br><br>//static members<br>PopUp.STOP = 0;<br>PopUp.MOVE_DOWN = 1;<br>PopUp.MOVE_UP = 2;<br>PopUp.SWITCH_TO_MIN = PopUp.MOVE_DOWN | 4;<br>PopUp.SWITCH_TO_MAX = PopUp.MOVE_UP | 8;<br><br>var __o={<br> create : function (){<br> <br> var doc=document;<br> var c=this.config; <br> <br> //create popup holder & config it.<br> var p = this.popup = doc.createElement("div");<br> this.container.appendChild(p);<br> <br> p.id=this.id;<br> p.style.cssText="position:absolute;\<br> z-index:9000;\<br> overflow:hidden;\<br> border:0px solid #f00;\<br> ";<br> $dom.setSize(p, c.width, c.height);<br> <br> <br> <br> //create popup content holder & config it.<br> var t = this.content = doc.createElement("div");<br> p.appendChild(t);<br> <br> t.id = this.id+"_content";<br> t.style.cssText="position:absolute;\<br> z-index:1;\<br> overflow:hidden;";<br> $dom.setSize(t, c.width, c.height);<br> $dom.setPosition(t,0,0);//add<br> <br> c.position.y = c.height;//add<br> this.onresize();//add<br> //$dom.setPosition(t, 0, c.height);//hide it at first<br> <br> <br> <br> // create content holder's content.<br> // a close button & an iframe for loading external content.<br> t.innerHTML = "<a id='closeButton' href='#'></a>"+<br> "<a id='switchButton' href='#'></a>"+<br> "<iframe id='"+this.id+"_content_iframe' src="+c.contentUrl+" frameborder=0 scrolling=no width='100%' height='100%'></iframe>";<br> <br> <br> var sBtn = this.switchButton = $_t(t,'a',"switchButton");<br> sBtn.style.cssText='position:absolute;\<br> z-index:2;\<br> \<br> font-size:0px;\<br> line-height:0px;\<br> \<br> left:220px;\<br> top:6px;\<br> width:15px;\<br> height:15px;\<br> \<br> background-image:url("http://image2.sina.com.cn/blog/http/blog.sina.com.cn/m/U1589P346T8D8972F73DT20061009105226.gif");';<br> <br> $addEL(sBtn,"click",$dele(this,"switchMode"),true);<br> $addEL(sBtn,"click",$cancelEvent,true);<br> <br> <br> var btn = $_t(t,'a',"closeButton");<br> btn.style.cssText='position:absolute;\<br> z-index:2;\<br> \<br> font-size:0px;\<br> line-height:0px;\<br> \<br> left:240px;\<br> top:6px;\<br> width:15px;\<br> height:15px;\<br> \<br> background-image:url("http://image2.sina.com.cn/blog/http/blog.sina.com.cn/m/U1589P346T8D8972F18DT20061009105226.gif");';<br> <br> <br> <br> $addEL(btn,"mouseover",function (e){<br> $dom.setAlpha(this,0.4);<br> },true);<br> <br> $addEL(btn,"mouseout",function (e){<br> $dom.setAlpha(this,1);<br> },true);<br> <br> <br> <br> $addEL(btn,"click",$dele(this,"hide"),true);<br> $addEL(btn,"click",$cancelEvent,true);<br> <br> var container=$IE ? document.body : document.documentElement;<br> <br> $addEL(document.body,"resize",$dele(this,"onresize"),true);<br> <br> this.__hackTimer=window.setInterval("__popup.onresize()",50);<br> <br> <br> $addEL(container,"scroll",$dele(this,"onresize"),true);<br> <br> //initialize position at once.<br> this.onresize();<br> <br> },<br> <br> show : function (){<br> <br> if (!this.config.display) return;<br> <br> this.moveTargetPosition = 0;<br> this.status = PopUp.MOVE_UP;<br> this.startMove();<br> },<br> <br> hide : function (){<br> <br> this.moveTargetPosition = this.config.height;<br> this.status = PopUp.MOVE_DOWN;<br> this.startMove();<br> },<br> <br> minimize : function (){<br> //alert("minimize");<br> this.mm = "min";<br> this.moveTargetPosition = this.config.height - 28;<br> this.status = PopUp.SWITCH_TO_MIN;<br> this.startMove();<br> <br> var s = this.switchButton.style;<br> var bg = s.backgroundImage;<br> <br> if (bg.indexOf(this.imgMin) > -1) {<br> bg = bg.replace(this.imgMin,this.imgMax);<br> s.backgroundImage = bg; <br> }<br> },<br> <br> maximize : function (){<br> //alert("maximize");<br> if (!this.config.display) return;<br> <br> this.mm = "max";<br> this.moveTargetPosition = 0;<br> this.status = PopUp.SWITCH_TO_MAX;<br> this.startMove();<br> <br> <br> var s = this.switchButton.style;<br> var bg = s.backgroundImage;<br> <br> if (bg.indexOf(this.imgMax) > -1) {<br> bg = bg.replace(this.imgMax,this.imgMin);<br> s.backgroundImage = bg; <br> }<br> },<br> <br> delayHide : function (){ <br> window.setTimeout("__popup.hide()",this.config.time.hold);<br> },<br> <br> delayMin : function (){<br> window.setTimeout("__popup.minimize()",this.config.time.hold);<br> },<br> <br> switchMode : function (){<br> //alert("switch");<br> if (this.mm == "min"){<br> this.maximize();<br> } else {<br> this.minimize();<br> }<br> },<br> <br> startMove : function (){<br> this.stopMove();<br> <br> this.intervalHandle = window.setInterval("__popup.move()",100);<br> <br> this.startMoveTime = new Date().getTime();<br> //this.startPosition = $dom.getPosition(this.content).y;//parseInt(this.content.style.top);<br> this.startPosition = this.config.position.y;<br> },<br> <br> stopMove : function (){<br> if (this.intervalHandle != null) window.clearInterval(this.intervalHandle);<br> this.intervalHandle = null;<br> },<br> <br> <br> move : function (){<br> <br> <br> var t = new Date().getTime();<br> t = t - this.startMoveTime;<br> <br> var total = this.status & PopUp.MOVE_UP ? <br> this.config.time.slideIn : <br> this.config.time.slideOut;<br> <br> var y = this.config.motionFunc(this.startPosition, this.moveTargetPosition, t/total);<br> //this.content.style.top = y + "px";<br> this.config.position.y = y;<br> this.onresize();<br> <br> if (t >= total){<br> this.onFinishMove();<br> }<br> },<br> <br> onFinishMove : function (){<br> this.stopMove();<br> //this.content.style.top = this.moveTargetPosition + "px";<br> <br> if (this.status == PopUp.MOVE_UP && this.config.time.hold > 0 ){<br> this.delayMin();<br> } else {<br> if (this.__hackTimer!=null) window.clearInterval(this.__hackTimer);<br> }<br> this.status = PopUp.STOP;<br> },<br> <br> onresize : function (){<br> var c=this.config;<br> //var t=document.documentElement;<br> var t=document.body;<br> <br> var dx=t.clientWidth + t.scrollLeft;<br> var dy=t.clientHeight + t.scrollTop;<br> <br> var x = dx - c.right - c.width ;<br> var y = dy - c.bottom - c.height + c.position.y;<br> <br> <br> $dom.setPosition(this.popup, x, y); <br> $dom.setSize(this.popup, c.width, c.height-c.position.y);<br> }<br>}<br><br>$cpAttr(PopUp.prototype,__o);<br><br>/*---------------------------------------*/<br><br>function readCookie(name)<br>{<br> var cookieValue = "";<br> var search = name + "=";<br> if(document.cookie.length > 0)<br> { <br> offset = document.cookie.indexOf(search);<br> if (offset != -1)<br> { <br> offset += search.length;<br> end = document.cookie.indexOf(";", offset);<br> if (end == -1) end = document.cookie.length;<br> cookieValue = unescape(document.cookie.substring(offset, end))<br> }<br> }<br> return cookieValue;<br>}<br><br>function writeCookie(name, value, hours)<br>{<br> var expire = "";<br> if(hours != null)<br> {<br> expire = new Date((new Date()).getTime() + hours * 3600000);<br> expire = "; expires=" + expire.toGMTString();<br> }<br> document.cookie = name + "=" + escape(value) + expire + ";path=/";<br>}<br><br>/**<br>* main function to config the pop-up window & run it.<br>* web deployer change codes here to manipulte popups performance.<br>* & should not change codes out of this function.<br>*/<br>function job(){<br><br> /**<br> * config object<br> */<br> var cfg={<br> //width & height of the popup window ,these values should be determined debpended on inner contents.<br> width : 260,<br> height : 190,<br> <br> //distance to the bottom & the right edge.<br> bottom : 2,<br> right : 1,<br> <br> //switch of displaying the popup<br> display : true,<br> <br> //content url<br> contentUrl : "http://blog.sina.com.cn/lm/mini/01.html",<br> <br> //time configuration,in seconds<br> time : {<br> slideIn : 1,<br> hold : 60,<br> slideOut : 1<br> } <br> }<br> <br> //at what time the popup should display,in hours : 0~23,<br> //the number after add symbol means after how many the hours to display popup for the next time. <br> var displayTimeList = ["7+7"];<br> <br> // the popup displays each time thie page reload or only once at the first time page loaded.<br> // once / eachTime<br> //var displayMode = "once";<br> var displayMode = "eachTime";<br> <br> //cookie name storing the next time to display popup<br> var cookieName="sina_blog_popup_next_display_time";<br> <br> <br> <br> /**<br> * --------------------- from here below, the codes should NOT be modified.<br> */<br> var hours={};<br> var delays=[];<br> for (var i=0;i<displayTimeList.length;i++) {<br> var o = displayTimeList[i];<br> var ar = o.split("+");<br> var t = parseInt(ar[0]);<br> for (var m=0;m<ar.length-1;m++){<br> ar[m]=ar[m+1];<br> } <br> hours[t]=true;<br> for (var j=0;j<ar.length;j++){<br> hours[t + parseInt(ar[j])]=true;<br> } <br> }<br> displayTimeList=[];<br> for (var i in hours){<br> var s = parseInt(i);<br> if (isNaN(s)) continue;<br> displayTimeList[displayTimeList.length]=s;<br> }<br> displayTimeList = displayTimeList.sort();<br> //alert(displayTimeList);<br> <br> <br> var pp = new PopUp("xp", cfg);<br> window.__popup=pp;<br> pp.create();<br> <br> <br> <br> //display:<br> <br> var n=readCookie(cookieName); <br> <br> if (displayMode=="eachTime") <br> pp.show();<br> else {<br> var tm=new Date().getTime();<br> if (n==null || tm>n) {<br> pp.show();<br> <br> //get next display time<br> var hr=new Date().getHours();<br> var f = 60*60*1000;<br> var l = displayTimeList.concat(), len = l.length;<br> for (var i = 0; i < len; i++) l[len + i] = l[i] + 24;<br> for (var i = 0; i < l.length && hr >= l[i]; i++);<br> <br> var dt = new Date();<br> dt.setHours(l[i] > 23 ? l[i] - 24 : l[i]);<br> var nextTime = dt.getTime();<br> if (l[i] > 23) nextTime += f * 24 ;<br> <br> writeCookie(cookieName, nextTime, 24);<br> }<br> }<br>}<br><br>function doit(){<br> if (document.body == null) { <br> window.setTimeout(doit,500);<br> return;<br> }<br> <br> job();<br>}<br><br><br>doit();<br></script>

2007-10-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除