预览模式: 普通 | 列表

DOCTYPE html PUBLIC 让人吐血的问题

使用了DOCTYPE html PUBLIC之后有些东西改变了~~害我查找了好久的错误~~追踪的好累啊~~

在javascript里面调用一些属性的名称发生了改变 我说怎么得不到document.body.scrollTop的值
以后js脚本取document值时候有问题估计就是这里弄出来的~~

很明显 使用了DOCTYPE html PUBLIC脚本之后document.body.scrollTop必须用document.documentElement.scrollTop来调用~document.documentElement.scrollLeft也是~
诸如此类都要改

在定义了DOCTYPE之后,使用document.documentElement.scrollLeft代替document.body.scrollLeft。同理使用document.documentElement.scrollTop代替document.body.scrollTop。

这样在有DOCTYPE的时候,图层也可以滚动了。

但是,在没有DOCTYPE的时候document.documentElement.scrollLeft也永远为零了,那么,能否有一个在有没有DOCTYPE定义都可以用的方案涅?嘿嘿。

那就可以这样写:

 

 

function scrollTop() //浏览器滚动条位置
{
var scrollTop;
if (document.documentElement && document.documentElement.scrollTop){
scrollTop = document.documentElement.scrollTop;
}else if (document.body){
scrollTop = document.body.scrollTop;
}else if (window.pageYOffset){
scrollTop = window.pageYOffset;
}
return scrollTop;
}

查看更多...

分类:Programer | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2345

<我的美女大小姐> 经典语录

1、看一个国家的国民教育,要看他的公共厕所;看一个人的心术,要看他的眼睛;看一个的身价,要看他的对手。所以,不要拿我来抬高你的身价,你还不配做我的仇人

2、有点俗,有点怪,有点无聊加可爱!有点懒,有点坏,有点机灵加无赖!

3、我暂时还没有死的打算,等我死后再去通知你吧,记的晚上留门~~!

4、世界上有许多事情并不是能用金钱来解决的。就象是你身后的那两个跟班,如果我给你钱,你能让他们两个当众下出蛋吗?

5、别以为自己长的跟擎天柱一样就以为能挽救这个世界,没有用的.

查看更多...

Tags: 好玩的

分类:Play | 固定链接 | 评论: 4 | 引用: 0 | 查看次数: 19577

百度“知道”里的回答里的搞笑回答

1、提问:显示器画面不停地轻微抖动,有什么办法?

 答:你也不停地抖动,当你的频率和振幅与显示器画面一致时,你就感觉不出来了。

2、提问:如何除掉烦人的狗?我家附近有人养狗,且不管它,随便跑,经常晚上在我家门口拉屎,有没有办法不让它在我家拉屎,或神不知鬼不觉地把它弄死且没人知道。

 回答一:和主人说没用,我告诉你个好主意。每次狗拉屎的时候,你去偷看,等狗发现了你在偷看,它会害羞的,就再也不敢到你家门口拉屎了。

 回答二:给它买一台计算机,然后教它上网,它就没空去你家门口了。

3、提问:为什么我玩3D游戏时会头晕?

 回答一:小脑不发达。 

 回答二:大脑不发达。

 回答三:大小脑都不发达。

4、提问:怎么驱赶蚂蚁?

 回答一:在寝室门上贴上“戒严”或者“查封”等字样,造成寝室已经停止营业的假象。

 回答二:买个食蚁兽回来不就结了。

 回答三:播放张楚的歌曲《蚂蚁》三十遍。

 回答四:把这个问题贴到蚁巢门口,难死它们!难不死的也会被这个悖论折磨死。

 回答五:养些白蚁,让他们种族歧视,自相残杀。

5、提问:最简单的长寿秘诀是什么?

 回答:保持呼吸,不要断气。

6、提问:跷二郎腿的危害?

 回答:屁股会一半大一半小。

7、提问:超人的内裤为什么总是穿在外面?

 回答一:穿在里面了,谁知道你是超人?

 回答二:蝙蝠侠,内裤套头了;蜘蛛侠,内衣外穿了;超人怎么能不走时尚路线呢?他就内裤外穿了。

8、提问:我要问百度知道知道不知道知道就知道不知道就不知道不要知道说不知道不知道说知道到头来知道变成不知道不知道还是不知道天知道地知道百度知道知道若要问我知道不知道知道不知道也不知道。请加标点符号,眼睛不好慎入。

 回答:我要问“百度知道”:“知道不知道?”知道就知道,不知道就不知道。不要知道说不知道,不知道说知道,到头来知道变成不知道,不知道还是不知道。天知道、地知道、“百度知道”知道,若要问我知道不知道,知道不知道也不知道!

9、提问:我的电脑里有病毒我应该买什么杀虫剂好?

 回答一:什么都不用,你可以一个月不开机,把病毒饿死在里面。

 回答二:光饿死还不够,万一病毒太饿了爬出来感染别人的电脑怎么办!不光要不开机饿死它,还要拿个袋子把电脑密封起来给它断水断粮断空气才行。

 回答三:用妇炎洁吧,洗洗更健康。

 回答四:用妇炎洁不行啊,楼上的。如果电脑是男性怎么办?其实用汰渍最好了。不伤手,除菌。

 回答五:楼上的全都不厚道,电脑病毒是不能用杀虫剂的,你把电脑带到防疫站给医生去打一针就行了,以后每年打一针就能彻底防止病毒入侵了。

 

            10、提问:怎样可以最有效地瘦臀?

             回答:蹭树。

 

           11、提问:为什么好马不吃回头草?

           回答:因为马儿拉屎在后面拉。

查看更多...

Tags: 好玩的

分类:Play | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2154

Asp.net中基于Forms验证的角色验证授权

Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。
Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cookie一起发送到服务端。服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了。

问题来了,在实际是用中我们往往需要的是基于角色,或者说基于用户组的验证和授权。对一个网站来说,一般的验证授权的模式应该是这样的:根据实际需求把用户分成不同的身份,就是角色,或者说是用户组,验证过程不但要验证这个用户本身的身份,还要验证它是属于哪个角色的。而访问授权是根据角色来设置的,某些角色可以访问哪些资源,不可以访问哪些资源等等。要是基于用户来授权访问将会是个很不实际的做法,用户有很多,还可能随时的增减,不可能在配置文件中随时的为不断增加的新用户去增加访问授权的。

下面大概的看一下Forms的过程。

Forms身份验证基本原理:

查看更多...

Tags: .NET form

分类:Programer | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2413

常用正则表达式

匹配中文字符的正则表达式: [u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行
匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字
匹配身份证:d{15}|d{18}
评注:中国的身份证为15位或18位
匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]d*$    //匹配正整数
^-[1-9]d*$   //匹配负整数
^-?[1-9]d*$   //匹配整数
^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:

只能输入数字:“^[0-9]*$”
只能输入n位的数字:“^d{n}$”
只能输入至少n位数字:“^d{n,}$”
只能输入m-n位的数字:“^d{m,n}$”
只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
只能输入非零的正整数:“^+?[1-9][0-9]*$”
只能输入非零的负整数:“^-[1-9][0-9]*$”
只能输入长度为3的字符:“^.{3}$”
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,

只能包含字符、数字和下划线。
验证是否含有^%&',;=?$"等字符:“[^%&',;=?$x22]+”
只能输入汉字:“^[u4e00-u9fa5],{0,}$”
验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”

正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,

“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
验证身份证号(15位或18位数字):“^d{15}|d{}18$”
验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”

正确格式为:“01”“09”和“1”“31”。

匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/
匹配首尾空格的正则表达式:(^s*)|(s*$)
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
(1)应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}
(2)应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现
String.prototype.trim = function()
{
return this.replace(/(^s*)|(s*$)/g, "");
}
(3)应用:利用正则表达式分解和转换IP地址
function IP2V(ip) //IP地址转换成对应数值
{
re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}
(4)应用:从URL地址中提取文件名的javascript程序
s="http://www.9499.net/page1.htm";
s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2") ; //Page1.htm
(5)应用:利用正则表达式限制网页表单里的文本框输入内容
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"
用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"
用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste= "clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"
用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''

Tags: 正则

分类:Programer | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1736

asp.net url重写

今天研究了一天这个问题
想实现诸如:http://www.ziuziu.cn/2008/2/2
http://www.ziuziu.cn/default.html
等这种url
当然,程序直接生成静态页面可以实现的
但是那样要生成很多这种页面以及文件夹
而且在数据量大的情况下生成是很浪费时间的
在这种情况下就要实现url重写了,当然就很多种方法
下面介绍的是微软的URLRewriter方法

1.首先下载URLRewriter.dll,下载之后直接复制到你的网站的bin目录中
下载地址 http://ziuziu.cn/download/URLRewriter.rar
2.配置你的web.config文件
在<configuration>节点下加
<configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>

<RewriterConfig>
    <Rules>
     <!--一下三个是我自己写的测试的,当然你可以写很多个 -->
     <!--这个是把http://localhost:2001/default.aspx?id=1 生成http://localhost:2001/d1.aspx 这种页面 -->
      <RewriterRule>
        <LookFor>~/d(\d{0,5})\.aspx</LookFor>
        <SendTo>~/default.aspx?ID=$1</SendTo>
      </RewriterRule>
    <!--这个是把http://localhost:2001/article.aspx?id=1 生成http://localhost:2001/1/a.html 这种页面 -->
      <RewriterRule>
        <LookFor>~/(\d{0,5})/a\.html</LookFor>
        <SendTo>~/article.aspx?id=$1</SendTo>
      </RewriterRule>
    <!--这个是把http://localhost:2001/test.aspx?id=1 生成http://localhost:2001/1/ 这种页面 -->
      <RewriterRule>
        <LookFor>~/(\d{0,5})/</LookFor>
        <SendTo>~/test.aspx?id=$1</SendTo>
      </RewriterRule>

    </Rules>

查看更多...

Tags: .NET

分类:Programer | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2069

在C#中编写多线程应用程序。

以前在使用VB来实现多线程的时候,发现有一定的难度。虽然也有这样那样的方法,但都不尽人意,但在C#中,要编写多线程应用程序却相当的简单。这篇文章将作简要的介绍,以起到抛砖引玉的作用!
      .NET将关于多线程的功能定义在System.Threading名字空间中。因此,要使用多线程,必须先声明引用此名字空间(using System.Threading;)。
      即使你没有编写多线程应用程序的经验,也可能听说过“启动线程”“杀死线程”这些词,其实除了这两个外,涉及多线程方面的还有诸如“暂停线程”“优先级”“挂起线程”“恢复线程”等等。下面将一个一个的解释。
      a.启动线程

    顾名思义,“启动线程”就是新建并启动一个线程的意思,如下代码可实现:
    Thread thread1 = new Thread(new
ThreadStart( Count));
    其中的 Count 是将要被新线程执行的函数。
    
b.杀死线程
    “杀死线程”就是将一线程斩草除根,为了不白费力气,在杀死一个线程前最好先判断它是否还活着(通过 IsAlive 属性),然后就可以调用 Abort 方法来杀死此线程。
    c.暂停线程

    它的意思就是让一个正在运行的线程休眠一段时间。如 thread.Sleep(1000); 就是让线程休眠1秒钟。
    d.优先级

    这个用不着解释了。Thread类中有一个ThreadPriority属性,它用来设置优先级,但不能保证操作系统会接受该优先级。一个线程的优先级可分为5种:Normal, AboveNormal, BelowNormal, Highest, Lowest。具体实现例子如下:
    thread.Priority = ThreadPriority.Highest;
    
e.挂起线程
    Thread类的Suspend方法用来挂起线程,知道调用Resume,此线程才可以继续执行。如果线程已经挂起,那就不会起作用。
    if
(thread.ThreadState = ThreadState.Running)
    {
         thread.Suspend();
    }
    
f.恢复线程
    用来恢复已经挂起的线程,以让它继续执行,如果线程没挂起,也不会起作用。
    if
(thread.ThreadState = ThreadState.Suspended)
    {
         thread.Resume();
    }
    下面将列出一个例子,以说明简单的线程处理功能。此例子来自于帮助文档。
    using System;
    using System.Threading;

    // Simple threading scenario: Start a static method running
    // on a second thread.
    public class ThreadExample {
        // The ThreadProc method is called when the thread starts.
        // It loops ten times, writing to the console and yielding
        // the rest of its time slice each time, and then ends.
        public static void ThreadProc() {
            for (int i = 0; i < 10; i++) {
                Console.WriteLine("ThreadProc: {0}", i);
                // Yield the rest of the time slice.
                Thread.Sleep(0);
            }
        }
    
        public static void Main() {
            Console.WriteLine("Main thread: Start a second thread.");
            // The constructor for the Thread class requires a ThreadStart
            // delegate that represents the method to be executed on the
            // thread. C# simplifies the creation of this delegate.
            Thread t = new Thread(new ThreadStart(ThreadProc));
            // Start ThreadProc. On a uniprocessor, the thread does not get
            // any processor time until the main thread yields. Uncomment
            // the Thread.Sleep that follows t.Start() to see the difference.
            t.Start();
            //Thread.Sleep(0);
    
            for (int i = 0; i < 4; i++) {
                Console.WriteLine("Main thread: Do some work.");
                Thread.Sleep(0);
            }
    
            Console.WriteLine("Main thread: Call Join(), to wait until ThreadProc ends.");
            t.Join();
            Console.WriteLine("Main thread: ThreadProc.Join has returned. Press Enter to end program.");
            Console.ReadLine();
        }
    }
    
       此代码产生的输出类似如下内容:

     Main thread: Start a second thread.     Main thread: Do some work.     ThreadProc: 0     Main thread: Do some work.     ThreadProc: 1     Main thread: Do some work.     ThreadProc: 2     Main thread: Do some work.     ThreadProc: 3     Main thread: Call Join(), to wait until ThreadProc ends.     ThreadProc: 4     ThreadProc: 5     ThreadProc: 6     ThreadProc: 7     ThreadProc: 8     ThreadProc: 9     Main thread: ThreadProc.Join has returned.  Press Enter to end program.

Tags: C# 多线程

分类:Programer | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3315

清明节(4月4日)快到了

"如果你死后,墓志铭打算写点啥?"

 

1.一居室,求合租,面议。
2.小事招魂,大事挖坟。
3.我觉得我还可以抢救一下!
4.广告位招租
5.提供鞭尸服务,一次100!
6.基因重组中,请稍候二十年
7.单挑冥王哈迪斯中,征求组队!
8.牧师,帮我复活一下下,谢谢。
9.当你看清这行字的时候:朋友,你踩到我了。
10.老子终于不用怕鬼了!
11.给爷笑一个,要不爷给你笑一个?
12.神农氏的墓志铭:我靠!这草有毒!
13.摸骨算命
14.陪聊,提供夜间上门服务。
15.还看,你丫也会有这一天的
16.我从前是个胖子,现在和所有躺著的人一样有骨感。
17.终於可以失掉身体80的水分,可以变瘦了!
18.强力推荐这个给我挖坑的,电话:xxxxxxxxx
19.曾经很黄很暴力,现在很黑很安静
20.谢谢来访,改日登门回拜.呵呵
21.来客请便,无人倒茶,站累躺下一起聊聊?
22.终于解决住房问题了

分类:Play | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1790