终于可以倒飞剪草了,高兴啊。上图纪念,呵呵…
首先来飞机的写真照~
然后上倒飞的照片,hoho~
倒飞降落后把刹车盘和大桨螺丝都磨花了…
昨天在写“做人不能太千龙”的时候发现似乎还有不少读者不知道G/F/W是什么。因此可能吧决定给这些朋友补一下课。和“什么是Web2.0,图解Web2.0”一样,这篇文章将以图片的形式告诉你什么是G/F/W,我的PS技术不好,所有图片做得比较难看,但我相信这并不影响对G/F/W的理解。这篇文章最多只能说是G/F/W的入门介绍。
什么是G/F/W?
上图是维基百科上对G/F/W的结构猜测。
G/F/W全称The Great Firewall Of China,是民间对中国网/络过/滤一系列设备的称呼,并非官网名称。也有人称其为功夫网、伟大的墙等等。
由于G/F/W的存在,我们经常无法访问国外一些比较自/由开放的网站,比如中文维基百科、vox等等。访问这些网站会出现连接被重置。因此千龙网记者无法在路透社上搜索“藏/独”。
站在官方立场的考虑,这是为了净化国内网络,防止虚假煽/动性信息蔓延。但过度而且机械化的过滤使我们失去了接触优秀信息的渠道。
G/F/W的审核机制有哪几种?
1、IP封/锁。
直接将某个IP封/锁,国内无法直接打开。
2、关键字过/滤。
当某个国外的网页上含有不恰当的关键字,一旦被G/F/W发现,国内无法打开。因此你会发现这篇文章有很多无用的符号。这是出于逃避关键字过/滤考虑的。
3、DNS劫/持。
DNS劫/持是将某域名指向错误的IP。故意解析错误。可能吧以前曾经发现多个国外网站被劫持到百度。
G/F/W是双向的:
不但国内访问国外网站会被审/查过/滤,国外访问国内网站也有如此情况。G/F/W的过滤是双向的。
如何突破G/F/W?
基本思路是通过代理访问:
一个代理无效,可以通过多级代理:
Tor网络(也就是我们口语所说的“戴套上网”)是一种多级代理模式,其线路迂回曲折,没有规律,遍布全球:
并不是所有代理都可以访问被/封网站,一般需要加密的代理。下图是3中常见的代理服务器对比:
具体方法请参看“多种突/破/网络封/锁的方法”。
手机上也有G/F/W,因此手机有时也许突破G/F/W,手机突破G/F/W的方法可参看这篇文章。
G/F/W封锁实例:
Google是G/F/W最频繁的打击对象之一。在google.com是某些敏/感字一般连接都会被重置,之后几分钟会无法连接Google。这不是Google的原因。
G/F/W盲目封锁的后果:
一些优秀的信息被机械化地过/滤。
使用外国虚拟主机的网站,如果运气不好,主机上有其它网站有敏/感信息遭到IP封锁,这个网站也难逃封/锁的命运。这是很无辜的。
各国都有对信息过/滤的机制,只是中国的相对较强。
希望不知道G/F/W的朋友,现在能对G/F/W有所了解。
附件:ignoring.rar(168860 Byte)
DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL 文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下。
DLL文件由于病毒或者安装某些程序的原因,可能造成破坏或者丢失。这里icech搜集了一些下载DLL文件的网站网址,都是很不错的网站,您需要的DLL文件应该都可以在这些网站中查找并下载到的!
麦地
http://www.mydll.com.cn/
Download and restore missing .dll files!
文件库
http://www.dll1.cn/
系统文件库
找DLL下载站
http://www.zhaodll.com/
针对操作系统所需要的常用dll文件下载
库文件信息
http://www.wjxxk.com/
DLL-files.com
http://www.dll-files.com/
Download all your missing dll-files. 一个国外的dll下载网站,dll文件的版本信息非常详细。
DLL World
http://dll.yaroslavl.ru/
To memory of previous closed DLL projects it is devoted.
From: www.weste.net
这篇文章是由José M. Aguilar在他卓越的博客中以西班牙语的形式首发,其后Timm Martin在获得Aguilar先生的授权下,对该文章进行翻译、修改,并且在DevTopics上发布。
以下13个小技巧可以使得你的代码在长时间内依然能够保持容易理解和维护。
1. 对不同级别的代码进行注释
对于不同级别的代码块,要使用统一的方法来进行注释。例如:
* 对于每一个类,需要包含一段简明扼要的描述,作者和上一次修改的时间
* 对于每一个方法,需要包含这个方法的用途,功能,参数以及返回结果
当你在一个团队里面的时候,采用一套注释的标准是非常重要的。当然,使用一种大家都认可的注释约定和工具(例如C#的XML注释和Java的Javadoc)在一定程度上能推动这项任务。
2. 使用段落注释
首先把代码块分解成多个“段落”,每一个段落都执行单一的任务;然后在每一个“段落”开始之前添加注释,告诉阅读代码的人接下来的这段代码是干什么用的
// 检查所有记录都是正确的
foreach (Record record in records)
{
if (rec.checkStatus()==Status.OK)
{
. . .
}
}
// 现在开始进行处理
Context ctx = new ApplicationContext();
ctx.BeginTransaction();
. . .
3. 对齐注释行
对于那些在行末写有注释的代码,应该对齐注释行来使得方便阅读
const MAX_ITEMS = 10; // maximum number of packets
const MASK = 0x1F; // mask bit TCP
有些开发人员使用tab来对齐注释,而另外一些人会用空格来对齐。由于tab在不同的编辑器和集成开发环境中会有所不同,所以最佳的方法是使用空格来对齐注释行。
4. 不要侮辱阅读者的智慧
要避免没用的注释,例如
if (a == 5) //如果a等于5
counter = 0 //把counte设为0
这不单把时间浪费在写没用的注释上面,同时也在分散读者的注意力。
5. 要有礼貌
应当避免没有礼貌的注释,例如“要注意一些愚蠢的用户会输入一个负数”,或者“修正由菜鸟工程师写的愚蠢得可怜的代码而导致的副作用”。这样的注释对于代码的写注释的人来说并没有任何好处,同时你永远都不会知道将来这些注释会被谁来阅读,你的老板,一个客户或者是刚才被你数落的愚蠢得可怜的工程师。
6. 直截了当
不要在注释里面写过多的废话。避免在注释里面卖弄ASCII艺术,写笑话,作诗和过于冗长。简而言之就是保持注释的简单和直接。
7. 使用统一的风格
有些人觉得注释应该让非程序员也能看懂。另外一些人觉得注释需要面对的读者只是程序员。无论如何,正如Successful Strategies for Commenting Code中所说的,最重要的是注释的风格需要统一,并且总是面向相同的读者。就自己而论,我怀疑非程序员是否会去读代码,所以我觉得注释应该面向程序员来写。
8. 在内部使用特殊的标签
当你在一个团队里工作的时候,采用一组一致的标签能帮助不同的程序员沟通。例如,很多团队会采用“TODO”标签来表示一段尚未完成的代码
int Estimate(int x, int y)
{
// TODO: implement the calculations
return 0;
}
标签注释并不会解释代码,它们寻求注意或者是传递信息。但是如果适当地使用这种技术,要记住跟进这段代码并且完成该标签传递的任务。
9. 在写代码的同时添加注释
当你在写代码而且记忆犹新的同时就添加注释。如果等到项目后期才添加注释,会让你事倍功半。“我没有时间写注释”,“我的时间很紧迫”和“项目已经延迟了”,这些都是不写注释的常见借口。有些工程师觉最佳的解决方法是“注释先行”。例如:
public void ProcessOrder()
{
// Make sure the products are available
// Check that the customer is valid
// Send the order to the store
// Generate bill
}
10. 把自己想象为注释的读者(事实上就是如此)
当你正在给代码写注释的时候,不仅仅为日后维护你的代码的开发者考虑,同时也设想一下如果自己就是注释的读者。Phil Haack曾经说过:
“一旦一行代码被敲到文件中, 你就已经要开始维护那一行代码了。”
所以,我们自己就是好(或者坏)注释的第一个受益者(或者受害者)。
11. 更新代码的时候要更新注释
如果注释没有随着代码的修改而更新,那么这些注释将是毫无意义的。代码和注释需要同步,否则注释只会让维护代码的开发者更加痛苦。需要特别注意的是,一些重构的工具会自动更新代码,但是却没有自动更新注释,那么注释就自然而然地过期作废了。
12. 良好可读性代码是注释的金科玉律
对于很多开发者来说,一个基本的原则就是:让代码自己描述自己。虽然有人怀疑这是由不喜欢写注释的程序员所倡导的一场运动,但是无需解释的代码有很大的好处,这些代码更加容易理解甚至让注释变得没有必要。例如,在我的文章Fluid Interfaces中就给大家展示了什么是清晰的无需解释的代码。
Calculator calc = new Calculator();
calc.Set(0);
calc.Add(10);
calc.Multiply(2);
calc.Subtract(4);
Console.WriteLine( “Result: {0}”, calc.Get() );
在这个例子里面,注释就像是违反了第4条技巧那样,变得毫无必要。要写出可读性好的代码,你需要使用适当的命名方式(在经典的Ottinger’s Rules中有阐述),保证恰当的缩进,并且采用编码风格指导。如果代码不遵守这条技巧,那么注释看起来就好像是为自己不好的代码的写道歉信一样。
13. 跟你的同事分享这些技巧
虽然从第10条技巧中我们已经知道了自己就是好注释的得益者,但是这些技巧对于所有的开发者来说都是很有帮助的,尤其是整个团队都有相同共识的情况下。因此,大方地跟你的同事去分享这些技巧,让我们写出更加容易理解和维护的代码。
这两天碰到两个Linux下面需要添加静态路由,研究了一下。
假如要添加一条路由,让192.168.200.0/24的数据包走192.168.0.1,那么就需要这样改:
要修改/etc/sysconfig/network-scripts/route-eth0,在里面添加
GATEWAY0=192.168.0.1
NETMASK0=255.255.255.0
ADDRESS0=192.168.200.0
然后需要重启Network Service以生效。
在命令提示符下设定IP的话用下面这条命令:
ifconfig ethx <IP_address>
自从上礼拜开始,我的Emule就连不上服务器了。就算连上了也是LowID,而且过不了多长时间就会被踢下来….
研究了好长时间,终于在今天解决了,呵呵。
其实解决的方法很简单,更换端口。Emule的默认端口是4661/TCP,和4672/UDP,只要把这两个端口改了,再重启Emule就可以了。比如改成5661/TCP,和5672/UDP。
估计是ISP在路由上做了限制关闭Emule…唉…
>>人,长得漂亮不如活得漂亮!
>>不能自拔的,除了爱情,还有别人地里的萝卜。
>>我以为“隐身”别人就找不到我了,没用的,像我这样的人,无论在哪里,都像漆黑夜里的萤火虫,够鲜明够出众。
>>有些事,明知是错的,也要去坚持,因为不甘心;有些人,明知是爱的,也要去放弃,因为没结局;有时候,明知没路了,却还在前行,因为习惯了。
>>女人如果不对自己狠,男人就会对你狠。
>>在事实面前,我们的想象力越发达,后果就越不堪设想。
>>钱很有用,却很不耐用;钱很难赚,却很好花。
>>订婚前,像孙子,百依百顺;定婚后,像儿子,学会顶嘴;结婚后,像老子,发号施令。
>>当别人开始说你是疯子的时候,你离成功就不远了……
>>都是背了太多的心愿,流星才会跌得那么重;都是藏了太多的谎言,我们分手才会那么伤。
>>男人和老婆的关系再差,和岳母的关系也是好的;女人和老公的关系再好,和婆婆的关系也是差的。
>>别人周末足不出户是为了做宅男宅女,而我只为了省钱。
>>爱情,有时侯脆弱得像一朵枯萎的玫瑰花,只有花形而无色彩。
>>在金钱和你的面前,我毫不犹豫地选择了你,结果却发现,我是人财两空!
>>一个成功的单身女人就是永远不需要男人,但身旁永远不缺男人。
>>“拆东墙补西墙”之升级版“拆别人墙补自己墙”。
>>钱太多了,就用不着考虑;完全没有钱,也用不着考虑了。
>>啄木鸟靠一张嘴去消灭害虫,但有人却靠一张嘴去充当害人虫!
>>走的最急的是最美的景色,伤的最深的是最真的感情。
>>我的兴趣可以分为静态和动态两种,静态就是睡觉,动态就是翻身。
>>一直认为人是立体的,坐了地铁才知道,人原来也可以是平面的!
>>人生三难题:思,相思,单相思。
>>地球是运动的,一个人不会永远处在倒霉的位置。
>>永远像孩子一样好奇,像年轻人一样改变,像中年人一样耐心,像老者一样睿智。
>>对感情不负责的人分两种:一种是经常恋爱,从不结婚;另一种是从不恋爱,经常结婚。
>>不是每句“对不起”,都能换来“没关系”。
>>世界上只有想不通的人,没有走不通的路。
>>把爱情投资在一个人身上,冒险;把爱情投资在许多人身上,危险。
>>请客吃饭,一请就来叫“爽快”,三请四请才来叫“摆谱”,怎么请都不来叫“原则”,不请自来叫“蹭饭”,请了不来、不请自来叫“装蒜”。
>>沉默–是男人总结出在吵架时对付女人的最有效武器。
>>程序就是教员工做正确的事;而制度则是防止员工做错事。
>>炒股是高手不说、一般人不懂、评论家赖以生存的行业。
>>如果说我懂的道理比别人多一点,那是因为我犯的错误比别人多一点。
>>挤公车的时候不小心抬了一下脚,马上就后悔了,因为发现没地方放下去了。
>>有钱的时候说:钱是挣出来的。没钱的时候说:钱是省出来的。
>>我是以德服人,如果以德服不了人,我就以德忽悠人。
>>进入社会前,我们都是具有七棱八角的顽石;进入社会后,我们都逐渐沦为鹅卵石。
>>男人攒私房钱是为了将来花在其他女人身上,女人攒私房钱是为了将来花在老公身上。
>>洗脸只洗脸颊,刷牙只刷门牙。
>>所有的房子都会成为故居;所有的容颜都会成为故人;所有的情节都会成为故事。
>>幸福使女人懂得了享受,不幸使男人学会努力。
>>想污染一个地方有两种东西:垃圾或是钞票!
>>我一向视美女与金钱如粪土,就像他们一直看我的那样。
>>你相信爱情魔咒吗?我相信,因为我的爱情从来没超过一个月……
>>如果我能够看到自己的背影,我想它一定很忧伤,因为我把快乐都留在了前面!
>>今天我想从自动取款机里取点钱,它提示“资金不足”,我不知道这是指银行还是指我。
>>数学老师告诉我:三角形是最稳定的。爱情经验提醒我:三角恋是最危险的。
>>不要西装革履,也不必着装休闲,把衬衫扣子解掉三颗,就是一种随意。
>>爱情与同情,就像沙子和金子,虽然混在一起,但还是能分得很清楚。
>>解释就是掩饰,掩饰就是编故事。
>>日子就像偷跑的小孩,无声地溜走……
>>降温了才发现身体拥有足够的脂肪是多么地令人温暖。
>>谁说我因软弱而流泪?我只是在排毒,因为眼泪能带出体内的毒素。
>>我对自己发誓说,从明天起,我一定要努力工作!可是,我每天都生活在今天啊!
>>理想和现实总是有差距的,幸好还有差距,不然,谁还稀罕理想?
>>苦不苦,为了MM泪飞舞;累不累,为了MM膝下跪;烦不烦,为了MM心发狂。
>>情侶做什么都是浪漫;夫妻做什么都是浪费。
>>是金子总要发光的,但当满地都是金子时,我就不知道自己是哪颗了。
>>恋爱时,一见面就亲嘴;结婚后,一见面就斗嘴。
>>恋爱之境界:把不是单身的生活过得像单身一样!
>>容易伤害别人和自己的人,总是对距离的边缘模糊不清的人。
>>我的腰闪了,惹祸的不是青春,而是压力……
>>年年打工年年愁,天天加班像只猴,加班加点无报酬,天天挨骂无理由。
>>生活让弱者感觉无奈,让强者感觉无聊。
>>不要爱上年纪小的男人,他会把你当成爱情学校,一旦学徒圆满,便会义无反顾地离开你。
>>我喜欢看你温柔的样子,像只羔羊,我喜欢羔羊的温柔,因为我是狼!
>>专一了说我不成熟,花心点又说我是禽兽,所以只能在网络里花心,在现实中专一,结果女朋友说我是只不成熟的禽兽。
>>正是女人对商场的爱,才使商场变得越来越精彩。
>>唱歌的时候,我总是高音上不去,低音下不来,中音控制不住。
>>我们的人生理想是:终生为人民币服务。
>>骗人有风险,说谎要谨慎!
>>林妹妹不是病死的,其实是从天上掉下来摔死的。
>>任何人都可以变得狠毒,只要你尝试过嫉妒。
>>婚前男人觉得没有女人适合自己,婚后男人觉得很多女人适合自己。
>>按一个键,把烦恼统统删掉;画一个圈,把快乐和甜蜜套牢!
>>如果你容不下我,说明不是你的心胸太狭小,就是我的人格太伟大。
>>思念将如阳光下的黑影,我逃他追,我追他逃。
>>时间就像一张网,你撒在哪里,你的收获就在哪里。
>>爱情就像脚上的鞋,只有失去的时候才知道赤脚走路是什么滋味!
>>真正幸运的人,并不是在赌桌上拿到一手好牌的人,而是那些懂得在什么时候离桌的人。
>>这年头,不求自己出名,只要和自己长得像的人出名就行。
>>每人都有眼前一亮的时候,就如每人都有眼前一黑的时候一样。
>>男人穿衣服就像找女友,要有品味。
>>以前我以为,你就是全世界;现在才知道,全世界就是你。
>>说有上辈子的人是在骗自己;说有下辈子的人是在骗别人。
>>不小心踩到了郁金香,它却将香味留在了你的脚上,这就叫宽容。
>>你快回来,我一人忽悠不来!
>>这小伙子长得,把脸挡上跟个演员似的……
>>金钱视我如粪土,我还视金钱如粪土呢!都是粪土谁怕谁啊!
>>抢走别人的东西是不对的,但不和人分享自己拥有的东西也是不对的!
>>当男人遇见女人,从此只有纪念日,没有独立日。
>>闭上眼睛,我看到了我的前途……
>>路见不平一声吼,吼完继续往前走。
>>当裤子失去皮带,才懂得什么叫做依赖。
>>人生有时就像电脑,说死机就死机,没得商量。
>>明月几时有,自己抬头瞅。
>>关关雎鸠,在河之洲。一份工作,君子好逑。
>>我一直很听话,听自己的话。
>>连贝克汉姆都不知道,你还有什么资格敢跟我谈篮球?
>>老鼠从不浪费晚上的时间,而我们人类却浪费了每天的三分之一。
>>常常告诫自己不要在一棵树上吊死,结果……在树林里迷路了。
>>每当夜晚来临的时候,我就特别羡慕蜗牛,人家工作效率再低,毕竟还有自己的房子啊!
>>爱情就像攥在手里的沙子,攥得越紧,流失得就越快!
>>人生有两大悲剧:一个是得不到想要的东西,另一个是得到了不想要的东西。
>>我参加了减肥班,教练让我穿宽松的衣服,要是有宽松的衣服我来参加减肥班干什么?
>>失败的男人把故事变成事故,成功的男人把事故变成故事。
>>世界太黑暗–三天不做工,吃不起洋葱。
>>我只想找一个花钱有能力的美人相伴,解决我家钱太多、容易发霉长毛的痛苦。
>>三十岁女人的目标:不起皱、不走样、不褪色、不变形。
>>每当冲锋号响起,我就赶紧躲在壕沟里,因为我是卧底!
>>唾沫是用来数钞票的,而不是用来讲道理的。
>>家庭暴力一旦开始,就只能和婚姻一起结束,不要相信男人说可以改掉的谎言。
>>不要爱上年纪小的男人,他会把你当成爱情学校,一旦学徒圆满,便会义无反顾地离开你。
>>我喜欢看你温柔的样子,像只羔羊,我喜欢羔羊的温柔,因为我是狼!
>>专一了说我不成熟,花心点又说我是禽兽,所以只能在网络里花心,在现实中专一,结果女朋友说我是只不成熟的禽兽。
>>正是女人对商场的爱,才使商场变得越来越精彩。
1 创建脚本块
<script language=”JavaScript”>
JavaScript 代码写在这里面
</script>
2 隐藏脚本代码
<script language=”JavaScript”>
<!–
document.write(“Hello”);
// –>
</script>
在不支持JavaScript的浏览器中将不执行相关代码
3 浏览器不支持的时候显示
<noscript>
Hello to the non-JavaScript browser.
</noscript>
4 链接外部脚本文件
<script language=”JavaScript” src="/”filename.js"”></script>
5 注释脚本
// This is a comment
document.write(“Hello”); // This is a comment
/*
All of this
is a comment
*/
6 输出到浏览器
document.write(“<strong>Hello</strong>”);
7 定义变量
var myVariable = “some value”;
8 字符串相加
var myString = “String1” + “String2”;
9 字符串搜索
<script language=”JavaScript”>
<!–
var myVariable = “Hello there”;
var therePlace = myVariable.search(“there”);
document.write(therePlace);
// –>
</script>
10 字符串替换
thisVar.replace(“Monday”,”Friday”);
11 格式化字串
<script language=”JavaScript”>
<!–
var myVariable = “Hello there”;
document.write(myVariable.big() + “<br>”);
document.write(myVariable.blink() + “<br>”);
document.write(myVariable.bold() + “<br>”);
document.write(myVariable.fixed() + “<br>”);
document.write(myVariable.fontcolor(“red”) + “<br>”);
document.write(myVariable.fontsize(“18pt”) + “<br>”);
document.write(myVariable.italics() + “<br>”);
document.write(myVariable.small() + “<br>”);
document.write(myVariable.strike() + “<br>”);
document.write(myVariable.sub() + “<br>”);
document.write(myVariable.sup() + “<br>”);
document.write(myVariable.toLowerCase() + “<br>”);
document.write(myVariable.toUpperCase() + “<br>”);
var firstString = “My String”;
var finalString = firstString.bold().toLowerCase().fontcolor(“red”);
// –>
</script>
12 创建数组
<script language=”JavaScript”>
<!–
var myArray = new Array(5);
myArray[0] = “First Entry”;
myArray[1] = “Second Entry”;
myArray[2] = “Third Entry”;
myArray[3] = “Fourth Entry”;
myArray[4] = “Fifth Entry”;
var anotherArray = new Array(“First Entry”,”Second Entry”,”Third Entry”,”Fourth Entry”,”Fifth Entry”);
// –>
</script>
13 数组排序
<script language=”JavaScript”>
<!–
var myArray = new Array(5);
myArray[0] = “z”;
myArray[1] = “c”;
myArray[2] = “d”;
myArray[3] = “a”;
myArray[4] = “q”;
document.write(myArray.sort());
// –>
</script>
14 分割字符串
<script language=”JavaScript”>
<!–
var myVariable = “a,b,c,d”;
var stringArray = myVariable.split(“,”);
document.write(stringArray[0]);
document.write(stringArray[1]);
document.write(stringArray[2]);
document.write(stringArray[3]);
// –>
</script>
15 弹出警告信息
<script language=”JavaScript”>
<!–
window.alert(“Hello”);
// –>
</script>
16 弹出确认框
<script language=”JavaScript”>
<!–
var result = window.confirm(“Click OK to continue”);
// –>
</script>
17 自定义函数
<script language=”JavaScript”>
<!–
function multiple(number1,number2) {
var result = number1 * number2;
return result;
}
// –>
</script>
18 调用JS函数
<a href=”#” onClick=”functionName()”>Link text</a>
<a href="/”javascript:functionName"()”>Link text</a>
19 在页面加载完成后执行函数
<body onLoad=”functionName();”>
Body of the page
</body>
20 条件判断
<script>
<!–
var userChoice = window.confirm(“Choose OK or Cancel”);
var result = (userChoice == true) ? “OK” : “Cancel”;
document.write(result);
// –>
</script>
21 指定次数循环
<script>
<!–
var myArray = new Array(3);
myArray[0] = “Item 0”;
myArray[1] = “Item 1”;
myArray[2] = “Item 2”;
for (i = 0; i < myArray.length; i++) {
document.write(myArray[i] + “<br>”);
}
// –>
</script>
22 设定将来执行
<script>
<!–
function hello() {
window.alert(“Hello”);
}
window.setTimeout(“hello()”,5000);
// –>
</script>
23 定时执行函数
<script>
<!–
function hello() {
window.alert(“Hello”);
window.setTimeout(“hello()”,5000);
}
window.setTimeout(“hello()”,5000);
// –>
</script>
24 取消定时执行
<script>
<!–
function hello() {
window.alert(“Hello”);
}
var myTimeout = window.setTimeout(“hello()”,5000);
window.clearTimeout(myTimeout);
// –>
</script>
25 在页面卸载时候执行函数
<body onUnload=”functionName();”>
Body of the page
</body>
JavaScript就这么回事2:浏览器输出
26 访问document对象
<script language=”JavaScript”>
var myURL = document.URL;
window.alert(myURL);
</script>
27 动态输出HTML
<script language=”JavaScript”>
document.write(“<p>Here’s some information about this document:</p>”);
document.write(“<ul>”);
document.write(“<li>Referring Document: “ + document.referrer + “</li>”);
document.write(“<li>Domain: “ + document.domain + “</li>”);
document.write(“<li>URL: “ + document.URL + “</li>”);
document.write(“</ul>”);
</script>
28 输出换行
document.writeln(“<strong>a</strong>”);
document.writeln(“b”);
29 输出日期
<script language=”JavaScript”>
var thisDate = new Date();
document.write(thisDate.toString());
</script>
30 指定日期的时区
<script language=”JavaScript”>
var myOffset = -2;
var currentDate = new Date();
var userOffset = currentDate.getTimezoneOffset()/60;
var timeZoneDifference = userOffset – myOffset;
currentDate.setHours(currentDate.getHours() + timeZoneDifference);
document.write(“The time and date in Central Europe is: “ + currentDate.toLocaleString());
</script>
31 设置日期输出格式
<script language=”JavaScript”>
var thisDate = new Date();
var thisTimeString = thisDate.getHours() + “:” + thisDate.getMinutes();
var thisDateString = thisDate.getFullYear() + “/” + thisDate.getMonth() + “/” + thisDate.getDate();
document.write(thisTimeString + “ on “ + thisDateString);
</script>
32 读取URL参数
<script language=”JavaScript”>
var urlParts = document.URL.split(“?”);
var parameterParts = urlParts[1].split(“&”);
for (i = 0; i < parameterParts.length; i++) {
var pairParts = parameterParts[i].split(“=”);
var pairName = pairParts[0];
var pairValue = pairParts[1];
document.write(pairName + “ :“ +pairValue );
}
</script>
你还以为HTML是无状态的么?
33 打开一个新的document对象
<script language=”JavaScript”>
function newDocument() {
document.open();
document.write(“<p>This is a New Document.</p>”);
document.close();
}
</script>
34 页面跳转
<script language=”JavaScript”>
window.location = “http://www.x-force.cn/”;
</script>
35 添加网页加载进度窗口
<html>
<head>
<script language=‘javaScript‘>
var placeHolder = window.open(‘holder.html‘,‘placeholder‘,‘width=200,height=200‘);
</script>
<title>The Main Page</title>
</head>
<body onLoad=‘placeHolder.close()‘>
<p>This is the main page</p>
</body>
</html>
JavaScript就这么回事3:图像
36 读取图像属性
<img src="/”image1.jpg"” name=”myImage”>
<a href=”# ” onClick=”window.alert(document.myImage.width)”>Width</a>
37 动态加载图像
<script language=”JavaScript”>
myImage = new Image;
myImage.src = “Tellers1.jpg”;
</script>
38 简单的图像替换
<script language=”JavaScript”>
rollImage = new Image;
rollImage.src = “rollImage1.jpg”;
defaultImage = new Image;
defaultImage.src = “image1.jpg”;
</script>
<a href="/”myUrl"” onMouseOver=”document.myImage.src = rollImage.src;”
onMouseOut=”document.myImage.src = defaultImage.src;”>
<img src="/”image1.jpg"” name=”myImage” width=100 height=100 border=0>
39 随机显示图像
<script language=”JavaScript”>
var imageList = new Array;
imageList[0] = “image1.jpg”;
imageList[1] = “image2.jpg”;
imageList[2] = “image3.jpg”;
imageList[3] = “image4.jpg”;
var imageChoice = Math.floor(Math.random() * imageList.length);
document.write(‘<img src=”’ + imageList[imageChoice] + ‘“>’);
</script>
40 函数实现的图像替换
<script language=”JavaScript”>
var source = 0;
var replacement = 1;
function createRollOver(originalImage,replacementImage) {
var imageArray = new Array;
imageArray[source] = new Image;
imageArray[source].src = originalImage;
imageArray[replacement] = new Image;
imageArray[replacement].src = replacementImage;
return imageArray;
}
var rollImage = createRollOver(“image1.jpg”,”rollImage1.jpg”);
</script>
<a href=”#” onMouseOver=”document.myImage1.src = rollImage1[replacement].src;”
onMouseOut=”document.myImage1.src = rollImage1[source].src;”>
<img src="/”image1.jpg"” width=100 name=”myImage1” border=0>
</a>
41 创建幻灯片
<script language=”JavaScript”>
var imageList = new Array;
imageList[0] = new Image;
imageList[0].src = “image1.jpg”;
imageList[1] = new Image;
imageList[1].src = “image2.jpg”;
imageList[2] = new Image;
imageList[2].src = “image3.jpg”;
imageList[3] = new Image;
imageList[3].src = “image4.jpg”;
function slideShow(imageNumber) {
document.slideShow.src = imageList[imageNumber].src;
imageNumber += 1;
if (imageNumber < imageList.length) {
window.setTimeout(“slideShow(“ + imageNumber + “)”,3000);
}
}
</script>
</head>
<body onLoad=”slideShow(0)”>
<img src="/”image1.jpg"” width=100 name=”slideShow”>
42 随机广告图片
<script language=”JavaScript”>
var imageList = new Array;
imageList[0] = “image1.jpg”;
imageList[1] = “image2.jpg”;
imageList[2] = “image3.jpg”;
imageList[3] = “image4.jpg”;
var urlList = new Array;
urlList[0] = “http://some.host/”;
urlList[1] = “http://another.host/”;
urlList[2] = “http://somewhere.else/”;
urlList[3] = “http://right.here/”;
var imageChoice = Math.floor(Math.random() * imageList.length);
document.write(‘<a href=”’ + urlList[imageChoice] + ‘“><img src=”’ + imageList[imageChoice] + ‘“></a>’);
</script>
JavaScript就这么回事4:表单
43 表单构成
<form method=”post” action=”target.html” name=”thisForm”>
<input type=”text” name=”myText”>
<select name=”mySelect”>
<option value=”1”>First Choice</option>
<option value=”2”>Second Choice</option>
</select>
<br>
<input type=”submit” value=”Submit Me”>
</form>
44 访问表单中的文本框内容
<form name=”myForm”>
<input type=”text” name=”myText”>
</form>
<a href=‘#‘ onClick=‘window.alert(document.myForm.myText.value);‘>Check Text Field</a>
45 动态复制文本框内容
<form name=”myForm”>
Enter some Text: <input type=”text” name=”myText”><br>
Copy Text: <input type=”text” name=”copyText”>
</form>
<a href=”#” onClick=”document.myForm.copyText.value =
document.myForm.myText.value;”>Copy Text Field</a>
46 侦测文本框的变化
<form name=”myForm”>
Enter some Text: <input type=”text” name=”myText” onChange=”alert(this.value);”>
</form>
47 访问选中的Select
<form name=”myForm”>
<select name=”mySelect”>
<option value=”First Choice”>1</option>
<option value=”Second Choice”>2</option>
<option value=”Third Choice”>3</option>
</select>
</form>
<a href=‘#‘ onClick=‘alert(document.myForm.mySelect.value);‘>Check Selection List</a>
48 动态增加Select项
<form name=”myForm”>
<select name=”mySelect”>
<option value=”First Choice”>1</option>
<option value=”Second Choice”>2</option>
</select>
</form>
<script language=”JavaScript”>
document.myForm.mySelect.length++;
document.myForm.mySelect.options[document.myForm.mySelect.length – 1].text = “3”;
document.myForm.mySelect.options[document.myForm.mySelect.length – 1].value = “Third Choice”;
</script>
49 验证表单字段
<script language=”JavaScript”>
function checkField(field) {
if (field.value == “”) {
window.alert(“You must enter a value in the field”);
field.focus();
}
}
</script>
<form name=”myForm” action=”target.html”>
Text Field: <input type=”text” name=”myField”onBlur=”checkField(this)”>
<br><input type=”submit”>
</form>
50 验证Select项
function checkList(selection) {
if (selection.length == 0) {
window.alert(“You must make a selection from the list.”);
return false;
}
return true;
}
51 动态改变表单的action
<form name=”myForm” action=”login.html”>
Username: <input type=”text” name=”username”><br>
Password: <input type=”password” name=”password”><br>
<input type=”button” value=”Login” onClick=”this.form.submit();”>
<input type=”button” value=”Register” onClick=”this.form.action = ‘register.html’; this.form.submit();”>
<input type=”button” value=”Retrieve Password” onClick=”this.form.action = ‘password.html’; this.form.submit();”>
</form>
52 使用图像按钮
<form name=”myForm” action=”login.html”>
Username: <input type=”text” name=”username”><br>
Password: <input type=”password”name=”password”><br>
<input type=”image” src="/”login.gif"” value=”Login”>
</form>
53 表单数据的加密
<SCRIPT LANGUAGE=‘JavaScript‘>
<!–
function encrypt(item) {
var newItem = ‘‘;
for (i=0; i < item.length; i++) {
newItem += item.charCodeAt(i) + ‘.‘;
}
return newItem;
}
function encryptForm(myForm) {
for (i=0; i < myForm.elements.length; i++) {
myForm.elements[i].value = encrypt(myForm.elements[i].value);
}
}
//–>
</SCRIPT>
<form name=‘myForm‘ onSubmit=‘encryptForm(this); window.alert(this.myField.value);‘>
Enter Some Text: <input type=text name=myField><input type=submit>
</form>
JavaScript就这么回事5:窗口和框架
54 改变浏览器状态栏文字提示
<script language=”JavaScript”>
window.status = “A new status message”;
</script>
55 弹出确认提示框
<script language=”JavaScript”>
var userChoice = window.confirm(“Click OK or Cancel”);
if (userChoice) {
document.write(“You chose OK”);
} else {
document.write(“You chose Cancel”);
}
</script>
56 提示输入
<script language=”JavaScript”>
var userName = window.prompt(“Please Enter Your Name”,”Enter Your Name Here”);
document.write(“Your Name is “ + userName);
</script>
57 打开一个新窗口
//打开一个名称为myNewWindow的浏览器新窗口
<script language=”JavaScript”>
window.open(“http://www.liu21st.com/”,”myNewWindow”);
</script>
58 设置新窗口的大小
<script language=”JavaScript”>
window.open(“http://www.liu21st.com/”,”myNewWindow”,‘height=300,width=300‘);
</script>
59 设置新窗口的位置
<script language=”JavaScript”>
window.open(“http://www.liu21st.com/”,”myNewWindow”,‘height=300,width=300,left=200,screenX=200,top=100,screenY=100‘);
</script>
60 是否显示工具栏和滚动栏
<script language=”JavaScript”>
window.open(“http://www.x-force.cn/",toolbar=no, menubar=no);
</script>
61 是否可以缩放新窗口的大小
<script language=”JavaScript”>
window.open(‘http://www.x-force.cn/‘ , ‘myNewWindow‘, ‘resizable=yes‘ );</script>
62 加载一个新的文档到当前窗口
<a href=‘#‘ onClick=‘document.location = ‘125a.html‘;‘ >Open New Document</a>
63 设置页面的滚动位置
<script language=”JavaScript”>
if (document.all) { //如果是IE浏览器则使用scrollTop属性
document.body.scrollTop = 200;
} else { //如果是NetScape浏览器则使用pageYOffset属性
window.pageYOffset = 200;
}</script>
64 在IE中打开全屏窗口
<a href=‘#‘ onClick=”window.open(‘http://www.juxta.com/‘,‘newWindow‘,‘fullScreen=yes‘);”>Open a full-screen window</a>
65 新窗口和父窗口的操作
<script language=”JavaScript”>
//定义新窗口
var newWindow = window.open(“128a.html”,”newWindow”);
newWindow.close(); //在父窗口中关闭打开的新窗口
</script>在新窗口中关闭父窗口
window.opener.close()
66 往新窗口中写内容
<script language=”JavaScript”>
var newWindow = window.open(“”,”newWindow”);
newWindow.document.open();
newWindow.document.write(“This is a new window”);
newWIndow.document.close();
</script>
67 加载页面到框架页面
<frameset cols=”50%,*”>
<frame name=”frame1” src="/”135a.html"”>
<frame name=”frame2” src="/”about:blank"”>
</frameset>
在frame1中加载frame2中的页面
parent.frame2.document.location = “135b.html”;
68 在框架页面之间共享脚本
如果在frame1中html文件中有个脚本
function doAlert() {
window.alert(“Frame 1 is loaded”);
}
那么在frame2中可以如此调用该方法
<body onLoad=”parent.frame1.doAlert();”>
This is frame 2.
</body>
69 数据公用
可以在框架页面定义数据项,使得该数据可以被多个框架中的页面公用
<script language=”JavaScript”>
var persistentVariable = “This is a persistent value”;
</script>
<frameset cols=”50%,*”>
<frame name=”frame1” src="/”138a.html"”>
<frame name=”frame2” src="/”138b.html"”>
</frameset>
这样在frame1和frame2中都可以使用变量persistentVariable
70 框架代码库
根据以上的一些思路,我们可以使用一个隐藏的框架页面来作为整个框架集的代码库
<frameset cols=”0,50%,*”>
<frame name=”codeFrame” src="/”140code.html"”>
<frame name=”frame1” src="/”140a.html"”>
<frame name=”frame2” src="/”140b.html"”>
</frameset>
很久没有真正的写一篇blog了。总是贴贴照片,稍加评论的就是一篇blog了。本想写点自己的想法的,但到写的时候,又不知该说些什么。
也许我真的不擅长写作,也不擅长把自己的想法透露出来,呵呵。总是喜欢“潜水”,看看别人的Blog。呵呵。
最近周围的人、事都变化颇多。来的来,走的走。感触颇多~