2011-6-17

项目经理的悲惨生活

、很多招聘项目经理的信息上,无异例外的提到:风险控制,以目前国内的开发现状,风险控制是项目经理的责任吗? 你做到了吗?

  2、对于进度控制,项目工具、理论教条、计划、报告、经验的作用有多大,孰重孰轻,到底是什么是进度控制中的决定性因素。

  3、性格决定命运,项目经理的人格魅力,亲和力,沟通技巧是不是项目成败的关键因素?

  4、项目经理真的能掌控一切吗,遇到低素质的开发人员,性格怪异的程序员,桀骜不驯的程序员,你真的能搞定他吗,遇到啥也不懂的老总,遇到胡搅蛮缠的客户,怎么去搞定他们。

  5、不懂技术,也能带好团队吗?能做好一个项目吗,至少我没有见过这样的案例。

  6、项目经理如何能摆脱写作的海洋,要写计划,写需求分析,写进度报告,写设计记录,写会议记录,写考评记录,写…文档真的就能提高项目质量吗,文档之与开发效率是提高,还是降低?你喜欢做这样的项目经理吗?

  7、项目经理在开发期间需不需要写程序?是审查文档,还是审核代码,需不需要考评(我工作这几年,经历N个公司,考评都流与形式,即浪费了时间,又没有效果)。

  8、如果你到了一个新开张的公司开始了第一个新项目,没有测试部门,没有质量管理,没有规范,没有制度,没有企业文化,没有项目积累,团队需要你自己招兵买马(薪资不会很高,中间还有人跑掉),老总又不懂技术,你怎么来带好这个项目? 本文转自项目管理者联盟

  9、如果团队中没有一个懂得敏捷开发,指望看书,查资料,能应用到项目中去吗?

  10、如果新来一个软件学院的硕士,来做你们公司的开发部经理,天天都是软件工程,敏捷开发,测试驱动,RUP,IOC,你们怎样面对这样的开发经理?

  11、现在招聘项目经理的条件上,都附上了敏捷开发,RUP等,不懂这些,就不能管理好一个项目吗?

 程序员总是骂项目经理,他们人多,没办法,他们在人群中高呼,项目经理要爱护程序员!如何去爱护?想爱也难呀。人都是犯贱,你越是给他个好脸,他越不知道自己是谁,什么是都讲究个度,这是最难把握的。

  领导老是说,要关心下属,了解他们的能力和缺点、性格与心理,一天就8个小时,十几人的团队,项目经理又不是8爪鱼,又不是心理学家,能做多少事呢。 本文转自项目管理者联盟

  项目经理能辞退一个人吗,不能。能选择一个团队吗,不能。能主动要求公司给骨干成员加薪吗,不能。(很多人动不动拿这涨薪资来作为项目经理管理 的一条必做的内容,我觉得瞎扯淡,可能吗,薪资结构是公司的上层建筑,不可动摇,就算动了,也是毛毛雨,我们公司一个骨干,能力很强,在一次工程中,很努 力,吃了很多的苦,结束后,公司主动给他涨了200块钱,他觉得是一种侮辱,就Bye bye了,太失败了)

  如果在项目进展过程中掌握项目成员情况或平息人民内部矛盾就要多沟通,就要搞活动,请吃饭,公司不补贴的话,就要自己放血(我自己家里还一大堆 人民内部矛盾呢),老总在和我谈话时,总是说要多请他们吃吃饭,唱唱K,我都想抽他。一次两次可以,多了我也不愿意,做人不能伪大方,最失败的是总见我请 别人吃饭,没有请我吃饭。

  项目成员要求上班有学习看书的时间,我觉得是扯淡,总不能让我一个人扛着,你们看书吧?我自己已经多长时间没有看书了,我也记不清楚了。

  谁没有受过进度上的逼迫,有几个人能做好呢,项目经理不压程序员压谁,总不能被上头骂完后,跟没事的,还乐呵呵的请大家吃饭吧。

  有人说项目经理要有骨气,要敢于说不,有几个呢,再说公司接个单也不容易,好不容易来个单,你又搞个一年半载才出来一个beta版,还被客户骂了半死。

  我觉得大家都应当把自己的项目,自己的公司的,实情都说出来,不要讲一些书上才能看到的东西,撇开虚伪,敞开胸脯让大家来分析。

  我对我们公司成员(包括我自己)的现状大体分析如下,可能有主观成分,大家仁者见仁:

  1、并不认同公司的发展,混日子,你要说不想干了就走,他马上拿起包就走,没有一点留恋;

  2、热衷技术,有一定的软件工程基础,能够参与项目管理决策,能够对自己的分配任务给出合理的时间表(这种人真的很少,论坛中多,现实中少,现在是蓝领泛滥的社会);

3、普通的人,只能写代码,对于别人的事情,参与度不高,不愿意多做一项工作,9点钟来,6点钟走(太多了);

  4、对于自己的任务,并不能给出合理的估计与时间表,如果让他做估计,常常是延期完成的,这时,你需要自己去帮他做,如果延误了,你需要要帮助 他解决问题,批评与指责,告状,解决不了任何的问题。(比较多,很多项目经理对于进度,众口一词的说,把任务分解后,让成员来估计,是不是这样呢,他自己 都不知道,估计什么呀!) ;

  5、有困难也不说,死鳖一样,什么也不说,解决不了,就放在那儿,也不反映,如果需求或设计中有错误,知道错了,也不说,就按错的来。(有这样的人,当然不多,谁遇到谁倒霉);

  6、有的人,完不成任务,总是一大堆理由,你想批评他一句,他能回十句,烦都烦死了;

  7、缺乏团队精神的人,别人犯了错,如果影响到自己就大声的骂,如果没有影响到自己,就嘲笑。背后搞鬼搞怪。自己出了错,就隐瞒,害怕别人指出自己的错误,不承认犯错,脸红脖子粗的跟你没有完没了; 项目管理者联盟,项目管理问题。

  8、刚毕业的人,脑子灵巧,基础不扎实,知道一点东西,就不知天高地厚,贪玩,写出来的代码功能虽然实现了,但跟大便差不多,看了都想吐。没有团队精神,没有价值观(公司薪资不高,就只能这样的人,需要加功夫培训雕琢);

  9、传说中的项目经理:有一个平常心的,知道自己缺点不足,不充大,不自大,不吹毛求疵,真正在做项目管理的项目经理,能够真正理解和掌控整个 项目进程的管理者(很少,连基本功能都没做扎实呢,却整天抓这个布局不好,那个颜色不好看,这个类命名不符合规范,程序员说完成了,他就认为完成了,整天 只会问这个功能你需要多长时间完成,那个功能需要多少时间完成,程序员拍胸脯说9天,他就向上面拍胸脯是9天,到底需不需要9天,谁也说不清楚,9天过后 完不成了,除了继续做下去也没折)

  得出结论:一只高素质而且有着非长高的向心力的开发团队是传说中才能出现的。

  作为公司一个PM,能做的事是非常非常有限的,谁有能力去撼动一个公司的企业文化呢,在百十号人的公司里说句话,有人能深情的看你一眼呢?再说了公司不发展,总不能自己也不发展吧,所以只能离开,去寻找党组织了。到底什么时候才能找到党组织?


--
we drink green tea

共产党丢失了灵魂


党必须找回失去的灵魂  

   

——写在中国共产党建党90周年之际  

   

共产党,顾名思义,就是一个以共产主义理想作为这个党最高纲领的一个组织,这个组织所进行的一切工作、活动、斗争,都是为了实现这个最高纲领。而作为共产党组织的每一位成员也都是为了实现这个最高纲领而工作、而斗争。中国共产党,是依据马克思列宁主义理论组织而成的、为中国绝大多数人谋利益的政党,在长期的革命斗争中,中国共产党的杰出代表毛泽东同志,将马克思列宁主义同中国革命的具体实践相结合,继承和发展了马克思列宁主义的理论,形成了一套指导中国革命实践的毛泽东思想体系,成为中国共产党指导思想的理论基础。所以,共产主义理想以及为实现这一理想的马列主义毛泽东思想,共同组成了中国共产党的灵魂,是中国共产党赖以生存的基础。如果失去了这个党的灵魂,那就像人失去了灵魂,将成为一具行尸走肉、任人摆布,最后在糊里糊涂中葬送自己的生命。  

中国共产党是在艰难困苦和坎坎坷坷中,走过了90年,纵观党的历史,大概可以用三个三十年来概括,第一个三十年,是中国共产党历经艰辛带领中国人民艰苦卓绝完成新民主主义革命的三十年。这个时期,中国共产党的优秀儿女们以钢铁般的意志坚持自己的信仰,紧紧的依靠全国人民,战胜了帝国主义、封建主义和官僚资本主义,创建了新中国。中国共产党由小到大、由弱到强,最后战胜敌人,完成了新民主主义革命,靠的是什么?靠的是始终不渝的坚守马列主义毛泽东思想和共产主义理想这个党的灵魂。  

建国后的三十年,是中国共产党在中国进行共产主义伟大实践,取得辉煌成果的三十年。军事上,中国共产党带领全国人民,战胜了帝国主义国家及其走狗们的猖狂进攻,抗美援朝、中印边境保卫战、抗美援越、珍宝岛保卫战,都是中国共产党在敌我强弱对比悬殊到不可想象的情况下,依靠全国人民取得的一个又一个的伟大胜利,创造了人类历史上弱国战胜强国的战争奇迹。中国共产党领导下的人民解放军成了一支用毛泽东思想武装起来的,使敌人闻风丧胆而无敌于天下的人民武装。在经济和科技领域,中国共产党紧紧依靠全国人民,战胜了帝国主义国家的重重封锁,完成了生产资料公有制的社会主义改造。坚持独立自主、自力更生的方针,用短短的十几年时间,建立起了中国自己的工业体系和科技、国防体系,使中国社会开始走上了工业化、现代化的道路。两弹一星、万吨货轮、人工牛胰岛素、巨型计算机、大型飞机等方面取得的成就,不管是时间还是财力的投入上,都是资本主义国家的十分之一。到毛主席逝世时候,中国已经在政治、经济、科技、国防、外交等领域取得了辉煌成绩,已经挤入世界强国之列。工业现代化基本实现,农业机械化、现代化也在局部地区开始实现。中国的粮食产量、钢铁产量已经名列世界前茅、尖端科技在某些领域已经领先于世界。在外交上,我们坚持和平共处五项原则,联合世界上所有的第三世界国家,共同反对霸权主义,掀起了一场全球范围内的共产主义运动,国家要革命、民族要解放、人民要革命,成了当时世界不可抗拒的历史潮流,中国共产党几乎主导了这场潮流。用毛主席的话讲,就是“我们的朋友遍天下!”。我们取代台湾进入了联合国,并且成了常任理事国,从此,中国走到了世界舞台的中心,使得美帝国主义也不得不低头认输,主动来华求和。在政治上,经过无产阶级文化大革命洗礼的中国人民,意气风发斗志昂扬,满怀激情的投入到社会主义革命和建设中,全国上下万众一心、众志成城,社会风气蒸蒸日上,涌现了雷锋、王杰、焦裕禄、王进喜、陈永贵等一大批社会主义革命和建设的英雄模范,中华民族出现了有史以来从未有过的大团结、大繁荣、大进步。所有取得这些伟大成就的根本原因,就是我们党始终保持了马列主义毛泽东思想和共产主义理想这个党的灵魂。  

毛主席逝世后,我们党又一次经历了一次历史转折,进入了改革开放的时期,我们称之为改革开放的三十年。如果说,新中国的成立,标志着中国共产党由新民主主义革命转变为社会主义革命和建设,是一次历史大转折的话,那改革开放应当是我党历史上第二次大转折。第一次转折,中国共产党由于始终没有抛弃马列主义毛泽东思想和共产主义理想这个党的灵魂,取得了社会主义革命和建设的伟大成就。但第二次转折,即改革开放三十年,因为中国共产党逐渐丢失了自己的灵魂,正在经历着前所未有地危机,甚至被一些反党分子所操控和利用,将共产党置于人民的对立面。他们与人民为敌、败坏党的名声,挑起党群矛盾,以达到利用人民群众的力量来推翻共产党的罪恶目的。而所有这些,都是因为我们党自己所犯的一些错误造成的。  

毛主席逝世不久,社会上刮起了一股所谓的评价毛主席功过的歪风,这本来就是资产阶级向共产党发起反攻倒算的信号,作为中国共产党,应当要旗帜鲜明的进行反对和制止。可惜的是,共产党采取的是放任的态度,甚至我们党的一些高级领导人物也公开评论毛主席,党的最高决议彻底否定无产阶级文化大革命,甚至有所谓的“毛主席晚年错误”一说。这无疑是对当时反毛非毛分子的支持和纵容。随后,一股反对毛主席、诋毁侮辱毛主席的妖风在中国大地是愈刮愈烈,严重动摇了中国共产党的基础,为以后的“改革开放”(实际上是资本主义复辟)制造思想混乱和理论依据。中国共产党就是在那个时候开始逐渐丧失自己的灵魂。  

首先在政治上,以与时俱进为名,逐步抛弃无产阶级,中国共产党成了不分阶级、不分敌我的全民党(见历次党章修改),毛泽东思想逐渐被淡化,取而代之的是某理论;党不再是无产阶级的政党,资本家也可以入党。这些资本家一旦渗透到共产党内部,他们就会利用资本的力量来窃取共产党的领导权,为资产阶级谋利,同时披着共产党的外衣来剥削压迫工人阶级,将工人阶级同资本家的矛盾转化为工人阶级和共产党的矛盾。眼下,全国各地风起云涌的群体事件、官民对立,民众攻击政府等事件,就是这些窃据在共产党内的资本家和他们的代理人为了达到推翻共产党的目的,故意激起的党群矛盾。事件中,受害最深的是人民群众和共产党以及所领导的政府,从中得益的却是资本家及利益集团。由于他们为了自己的利益,如此丧心病狂地借共产党的手剥削压迫老百姓,甚至动用国家机器来镇压人民群众,致使共产党在人民群众中的威信一落千丈,人民不相信共产党,甚至怀疑共产党、怨恨共产党,最后,使共产党站到了人民的对立面。因为他们也知道,中国共产党的基石是中国的无产阶级和广大的劳动人民,共产党是鱼,人民是水,鱼离开了水,鱼还能能活吗?  

改开以后,毛主席等老一辈革命家带领全国人民历经千辛万苦建立起来的社会主义公有制被否定,中国开始了私有化的进程。先是一大批共产党内的高级官员,利用手中的权力,在“先富论”指引下,借改革开放之名疯狂抢劫公共财产和人民财富,使之一夜暴富,成为新兴的地主、资本家。在城市进行所谓的国有企业体制改革,一部分当权者一夜之间成了企业的拥有者,工人阶级则重新沦为奴隶、劳工,成为彻底的无产者。失去了生产资料的工人阶级自然成了新生的资产阶级的剥削、压迫的对象。农村也是这样,通过分田单干、土地承包、流转等形式,剥夺农民赖以生存的土地,制造了无数失地农民,使得中国无产者的队伍不断加大。对外开放,国外资本在中国大地上长驱直入,他们攻城略地,渗透和控制中国的主要产业,通过收买腐败分子,大肆侵吞中国人民的资源、生产资料和财富,控制中国的国民经济和社会的发展,利用所谓的WTO协议、“知识产权保护”等资本主义规则,遏制中国的产业和科学技术的发展和进步。改开三十年,我国在重要生产领域以及科技、军事等领域自主技术基本上没有得到什么发展,关键的核心技术都被外国资本家所控制,更令人发指的是,中国已经有的核心技术和高科技成果(如大飞机和计算机以及很多国防高科技项目),也被政府无端放弃,以至到今天在这方面要比我们的敌对国家落后几十年。外资的侵入,不但掠夺了中国人民的资源和财富,还和国内资本家一样,残酷剥削压榨中国工人阶级(富士康就是典型),致使中国阶级矛盾和阶级对立进一步恶化。这三十年来,中国人民从主人变成奴隶,人民生活每况愈下,失去了保障。住房、教育、医疗改革成了搜刮人民血汗的工具,已经成了压在人民头上的三座大山。由于失去了经济上的地位,人民的政治地位也没有了保障,生命财产朝不保夕,引发了无数惨案和群体事件,人民在官僚和资本家眼里成了“奴才、刁民、贱民”。而代表共产党行使政权的各级政府,早已把人民放在了自己的对立面,动辄就派出警察、武警甚至军队镇压反抗的群众;大量的城管、保安队伍,就是一群资本家豢养的打手和走狗,他们为虎作伥,将已经是挣扎在生死线上的人民一直往死路上逼。所谓的与国际接轨,政府接受了帝国主义和资本主义国家制定的国际分工,放弃高科技项目,转而拼命发展低端产业,将高能耗、高污染的外资企业以超国民的待遇引入国内,致使当今中国再也找不到一块干净的土地和一条清澈的水流,人民在高污染的环境中挣扎、呼号。这几十年,我们流尽了血汗、卖光了资源,毁尽了环境,我们得到了什么?结果是中外资本家和政府高官们卷走了我们所有的财富,跑到美国或其他国家去享受,留下走投无路的人民在污染、疾病、贫穷之中苦苦挣扎。而所有这些,人民将会把这笔账记在共产党的头上,因为精英们不是一直声称“共产党领导了这场改革开放”吗?  

“GDP”的不断增长了(据说已经是世界第二),但中国的国力却日渐萎缩,从毛泽东时代的站在世界舞台中心到如今的被挤到了边缘。改革开放后,我国基本奉行的是一边倒的外交策略,抛弃甚至出卖了以前第三世界国家的朋友和兄弟,全身心的投靠美国为首的西方帝国主义国家,中国从毛主席时代朋友遍天下沦落到了孤家寡人的地步。尽管如此,美国等一些国家其实从来就没有吧中国当成自己的伙伴,而是处处与中国为难,炸我使馆、撞我战机、侵犯我领空、领海,煽动周边国家强占中国领土,疯狂掠夺我资源,甚至策划新疆、西藏的分裂分子和国内的反动分子企图分裂和颠覆人民共和国,收买和培植了一大批反党、反革命分子利用改革开放以后所谓的言论自由,宣扬资本主义国家所谓的民主、自由,疯狂否定共产党的领导,反对毛泽东思想、侮辱毛主席的人格,向人民反攻倒算。随着这帮汉奸势力的不断壮大,他们利用后台的势力,不断侵入共产党内部,掌控了党和政府舆论导向,甚至窃取了权力,为美国服务。短短十几年,中国的经济已经被美国所控制,中国实际上已经是美国的经济殖民地,随着经济主权的沦丧,国家主权也随之逐步丧失,在外交上不得不完全听从美国的旨意。  

由于失去了共产主义信仰,思想阵地空虚,西方资产阶级腐朽没落的思想占领的中国的思想阵地。党和政府中的一大批人,他们抛弃了为人民服务的宗旨,一切向钱看,自私自利、拜金主义盛行,导致贪污腐败横行,道德沦丧,站到了人民的对立面,沦为人民的敌人。而人民群众则被边缘化,成为弱势群体,早就没有了毛泽东时代那种意气风发、斗志昂扬的精神面貌,成天为生存而奔波、辛劳,朝不保夕,疲于奔命。为了生存,不得不尔虞我诈、勾心斗角,过去那种互相关心、互助互利的风气荡然无存。最可悲的是年轻一代中国人,由于接受的是中国特色的变态教育,没有理想、缺乏道德,浑浑噩噩。奴性教育是他们丧失了血性,遇事退缩、不敢抗争,五毛党、带路党思想盛行,不以为耻反以为荣,他们作为中国的前途和希望,实在让人寒心!而这些问题的出现,完全是思想领域中抛弃和否定毛泽东思想所导致的后果。  

造成今天社会这种反常现象,主要责任在于共产党内部。改革开放三十年来,党内的错误思潮占据和主导了党的基本路线和基本方针的制定和执行,这些错误思潮的一个根本问题就是抵制和反对马列主义毛泽东思想。特别是毛泽东思想,他是马列主义理论结合中国具体革命实践所产生的最适合中国国情的建党理论,离开了毛泽东思想,也就放弃了共产主义理想,共产党就成了一个没有理想、没有纲领的组织,就像丢了魂灵的人。人无灵魂就是一具行尸走肉,党无灵魂,就成为一具空壳、一个任人操纵的工具。苏联共产党亡党亡国就是前车之鉴。苏共在赫鲁晓夫时代失去了党的灵魂,被外国资本和国内官僚买办资本所掌控,虽然外表是共产党,但实际上干的是与其宗旨完全相反的事情,最后被苏联人民所抛弃,被自己人所打倒,苏联共产党灭亡的悲剧就这样发生了。如今,中国的资改派们正在按照苏共亡党亡国的过程,为中国共产党设计一条走向毁灭的道路,所谓的政治体制改革,很可能被他们利用,成为走向毁灭之门。  

中国共产党建党已经90周年,但同时也到了我党生死存亡的关键时期。在国内,日益恶化的党群关系、政群关系,矛盾日益尖锐,群体事件、恶性案件时有发生,政府动用国家机器甚至利用黑社会镇压,迫使人民与政府成了敌对关系。国外操控的民族分裂分子、资产阶级自由化分子、汉奸卖国利益集团沆瀣一气,不断制造麻烦,挑起党群对立,煽动群众咒骂共产党、毛主席,借政治改革之名,企图推翻共产党的领导、推翻社会主义制度、分裂中国,最后将中国卖给美国。这些人就潜伏在共产党内部,甚至窃取了要职,掌控着党的大部分权力。面对如此艰难和危机,中国共产党必须要拿出非凡的勇气和胆略,重举马列主义毛泽东思想的伟大红旗,坚定共产主义理想和信念,找回自己的灵魂,唯有这样,中国共产党才有可能避免像苏联共产党那样被历史和人民所抛弃,最后亡党亡国!  

中国有七千多万党员,中间不乏有真正的马克思列宁主义毛泽东思想的信仰者、继承者和捍卫者,尽管他们可能没有身居要职,或者权力不足于左右党的路线的制定和执行,思想还无法左右党内主要思潮,但只要有这样一大批坚定共产主义理想和信念的人在,我们党就有希望找回自己的灵魂。值此建党90周年之际,希望全国真正的共产党员们行动起来,以实际行动同一切反党、反毛泽东思想的敌人作斗争,坚定地捍卫马克思列宁主义毛泽东思想,坚定捍卫共产主义理想,清除党内隐藏的变节分子和混入党内的阶级敌人,让马列主义毛泽东思想和伟大的共产主义理想这个党的灵魂永远牢牢的居住在中国共产党的体内。也只有这样,党才会有清醒的头脑,才有生命力,才能得到全国人民的支持和拥护,才可以战胜一切敌人。这是历史赋予我们的重大责任,作为一个真正的共产主义信仰者将义不容辞!    

邵建明  

--
we drink green tea

2011-6-12

manage cookies


 <script>

//写cookies函数 作者:翟振凯
function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值
{
    var Days = 30; //此 cookie 将被保存 30 天
    var exp  = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getCookie(name)//取cookies函数        
{
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
     if(arr != null) return unescape(arr[2]); return null;

}
function delCookie(name)//删除cookie
{
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
    if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}

--
we drink green tea



--
we drink green tea

change innerText

<P ID="oPara">Here's the text that will change.</P>
:
<BUTTON onclick="document.getElementById('oPara').innerText='WOW! It changed!'">Change text</BUTTON>
<BUTTON onclick="document.getElementById('oPara')
.innerText='And back again'">Reset</BUTTON>

--
we drink green tea

利用userData实现客户端保存表单数据

对于多数网页制作的朋友,实现在客户端保存在网页表单上的信息,比较多的是采用Cookie技术来实现,这些功能例如:下拉列表框选择的选项,文本框输入的数据等。事实上,我们可以利用微软DHTML默认行为中的userData行为来实现这个功能。
因为很多网友问到这样的问题,整理了一下,并提供了三个示例。下面将就该行为的使用做一个介绍:


UserData 行为(userData Behavior):


1、说明:

userData行为通过将数据写入一个UserData存储区(UserData store)来保存数据,userData可以将数据以XML格式保存在客户端计算机上,如果你用的是 Windows 2000 或者 Windows XP,是保存在C:Documents and SettingsLimingUserData文件夹下(如果操作系统不是安装在C盘,那么C就应该是操作系统所在的分区)。


该数据将一直存在,除非你人为删除或者用脚本设置了该数据的失效期。


userData行为提供了一个比Cookie更具有动态性和更大容量的数据结构。每页的UserData存储区数据大小可以达到64 Kb,每个域名可以达到640 Kb。

userData行为通过sessions为每个对象分配UserData存储区。使用save和load方法将UserData存储区数据保存在缓存(cache)中。一旦UserData存储区保存以后,即使IE浏览器关闭或者刷新了,下一次进入该页面,数据也能够重新载入而不会丢失。

出于安全的考虑,相同协议使用同一个文件夹保存UserData存储区数据。

For security reasons, a UserData store is available only in the same directory and with the same protocol used to persist the store.


在HTML、HEAD、TITLE和STYLE标记上应用了userData行为后使用save和load方法将会出错。
Setting the userData behavior (proposed) class on the HTML, HEAD, TITLE, or STYLE object causes an error when the save or load method is called.


必须在行内或者文档的HEAD部分宣告如下样式:


<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>


userData行为可用于Microsoft? Win32?和Unix平台上的IE 5.0以上版本,不支持Netscape。


2、语法:

HTML <ELEMENT STYLE="behavior:url('#default#userData')" ID=sID>

Script object.style.behavior = "url('#default#userData')" 

object.addBehavior ("#default#userData")

注:sID参数是一个可以描述该标记的唯一id。ID是可选的,但如果有,可以在脚本中方便地对该标记加以控制。


3、成员:


expires

设置或取得使用userData行为保存数据的失效日期。

脚本语法:对象ID.expires = 参数

参数是一个使用UTC(Universal Time Coordinate,世界调整时间)格式表示失效日期的字符串。该属性可以读写,没有默认值。浏览器会对比这个日期和当前日期,如果到期,该数据就自动失效。


getAttribute()

取得指定的属性值。


load(存储区名)

UserData存储区载入存储的对象数据。


removeAttribute()

从对象中删除指定的属性值。


save(存储区名)

将对象数据存入一个UserData存储区。


setAttribute()

设置指定的属性值。


XMLDocument

取得存储该对象数据的XML DOM引用。


具体用法可以查看MSDN(http://msdn.microsoft.com


4、示例

示例一:文本框标记的应用(Microsoft)

程序代码:
<HTML>
<HEAD>
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT>
function fnSaveInput(){
var oPersist=oPersistForm.oPersistInput;
oPersist.setAttribute("sPersist",oPersist.value); //将oPersist.value存储为sPersist属性
oPersist.save("oXMLBranch"); //存储在名为oXMLBranch的UserData存储区
}
function fnLoadInput(){
var oPersist=oPersistForm.oPersistInput;
oPersist.load("oXMLBranch"); //载入在名为oXMLBranch的UserData存储区
oPersist.value=oPersist.getAttribute("sPersist"); //将sPersist属性赋值给oPersist.value
}
</SCRIPT>
</HEAD>
<BODY>
<FORM ID="oPersistForm">
<INPUT CLASS="userData" TYPE="text" ID="oPersistInput">
<INPUT TYPE="button" VALUE="Load" onclick="fnLoadInput()">
<INPUT TYPE="button" VALUE="Save" onclick="fnSaveInput()">
</FORM>
</BODY>
</HTML>


示例二:Checkbox标记的应用

程序代码:
<style>
.userData {behavior:url(#default#userdata);}
</style>
<input type=checkbox id=chkbox1 class=userData>
<script>
var obj=document.all.chkbox1;
obj.attachEvent('onclick',saveChecked)
function saveChecked(){
obj.setAttribute("bCheckedValue",obj.checked);
obj.save("oChkValue");
}
window.attachEvent('onload',loadChecked)
function loadChecked(){
obj.load("oChkValue");
var chk=(obj.getAttribute("bCheckedValue")=="true")?true:false;
obj.checked=chk;
}
</script>


示例三:Select标记的应用

程序代码:
<style>
.userData {behavior:url(#default#userdata);}
</style>
<select id="select1" class="userData">
<option>option1</option>
<option>option2</option>
<option>option3</option>
<option>option4</option>
</select>
<script>
var obj=document.all.select1;
obj.attachEvent('onchange',saveSelectedIndex)
function saveSelectedIndex(){
obj.setAttribute("sSelectValue",obj.selectedIndex);
obj.save("oSltIndex");
}
window.attachEvent('onload',loadSelectedIndex)
function loadSelectedIndex(){
obj.load("oSltIndex");
obj.selectedIndex=obj.getAttribute("sSelectValue");
}
</script>


示例四:自定义标签保存userdata

程序代码:
<HTML XMLNS:WebUC>
<HEAD>
<STYLE>
WebUC:cacher {behavior:url(#default#userData);}
</STYLE>
<SCRIPT>
function fnSaveInput(){
cachetag.setAttribute("sPersist",txt1.value);
cachetag.save("cache");
}
function fnLoadInput(){
cachetag.load("cache");
txt1.value=cachetag.getAttribute("sPersist");
}
</SCRIPT>
</HEAD>
<BODY>
<WebUC:cacher id="cachetag"></WebUC:cacher>
<INPUT TYPE="button" VALUE="Load" onclick="fnLoadInput()">
<INPUT TYPE="button" VALUE="Save" onclick="fnSaveInput()">
<INPUT TYPE="text" ID="txt1" VALUE="">
</BODY>
</HTML>
------------------------------------------------------------------------

<!-- 
Created by 宝玉 , 2004-2-21
[url]http://www.webuc.net[/url]
[url]http://www.nwpubbs.net[/url]
Description: 记录页面上次的滚动条位置
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 记录滚动条位置 </TITLE>

<script language="javascript">
<!--
// 获取当前文件名
function getFileName()
{
var url = this.location.href
var pos = url.lastIndexOf("/");
if(pos == -1)
pos = url.lastIndexOf("")
var filename = url.substr(pos +1)
return filename;
}

function fnLoad()
{
with(window.document.body)
{
addBehavior ("#default#userData"); // 使得body元素可以支持userdate
load("scrollState" + getFileName()); // 获取以前保存在userdate中的状态
scrollLeft = getAttribute("scrollLeft"); // 滚动条左位置
scrollTop = getAttribute("scrollTop");
}
}

function fnUnload()
{
with(window.document.body)
{
setAttribute("scrollLeft",scrollLeft);
setAttribute("scrollTop",scrollTop);
save("scrollState" + getFileName()); 
// 防止受其他文件的userdate数据影响,所以将文件名加上了
// userdate里的数据是不能跨目录访问的
}
}
window.onload = fnLoad;
window.onunload = fnUnload;

// -->
</script>
</HEAD>


--
we drink green tea

html z-index什么意思

CSS可以处理高度、宽度、深度三个维度。在前面的课程中,我们已经了解了前两个维度。在本课中,我们将学习如何令不同元素具有层次。简言之,就是关于元素堆叠的次序问题。

为此,你可以为每个元素指定一个数字(z-index)。其原理是:数字较大的元素将叠加在数字较小的元素之上。


--
we drink green tea

前端 图片大小 控制

javascript 或者css控制内容页图片的宽度,使图片不超出文本溢出

[2011-5-25 17:43 Wednesday]

如何实现js控制内容页内的图片宽度不超过规定的区域

我自己写的方法3种(支持多图)

前台代码:   

 <div class="contentBox" id="contentBox">
        <img src="images/index_32.jpg" />

</div>

 

第一种:jquery插件式的代码

$(function(){
 $(".contentBox img").each(function(index,dom){
  if($(dom).width()>=630)
  {   
   height=$(dom).height()*630/$(dom).width();
   $(dom).height(height);
   $(dom).width(630);
  }
 })
})

第二种:纯javascript式的解决方案

window.onload=function(){
 img=document.getElementById("contentBox").getElementsByTagName("img");
 var MaxWidth=630;//设置图片宽度界限
 for(var i=0;i<img.length;i++)
 {
  if(img[i].offsetWidth>=MaxWidth)
  {
   img[i].height=img[i].offsetHeight*MaxWidth/img[i].offsetWidth;
   img[i].width=MaxWidth;
  } 
 }
}

第三种:css内嵌式expression方法

<style type="text/css">
.contentBox img{width:expression((this.offsetWidth>=630) ? "630px" : "auto" ); height:expression((this.offsetWidth>=630) ? (this.offsetHeight*630/this.offsetWidth)+"px" : "auto");}
</style>

 

试下吧,我试了都可以的


--
we drink green tea

强大的CSS表达式 ----- expression

IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javas cript表达式关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性。就是说CSS属性后面可以是一段Javas cript表达式,CSS属性的值等于Javas cript表达式计算的结果。在表达式中可以直接引用元素自身的属性和方法,也可以使用其他浏览器对象。这个表达式就好像是在这个元素的一个成员函数中一样。

  给元素固有属性赋值

  例如,你可以依照浏览器的大小来安置一个元素的位置。

以下是引用片段:
#myDiv { 
position: absolute; 
width: 100px; 
height: 100px; 
left: expression(document.body.offsetWidth - 110 + "px"); 
top: expression(document.body.offsetHeight - 110 + "px"); 
background: red; 
}

  给元素自定义属性赋值

  例如,消除页面上的链接虚线框。 通常的做法是:

以下是引用片段:
<a href="link1.htm" onfocus="this.blur()">link1</a> 
<a href="link2.htm" onfocus="this.blur()">link2</a> 
<a href="link3.htm" onfocus="this.blur()">link3</a>
   

  粗看或许还体现不出采用expression的优势,但如果你的页面上有几十甚至上百个链接,这时的你难道还会机械式地Ctrl+C,Ctrl+V么,何况两者一比较,哪个产生的冗余代码更多呢?

  采用expression的做法如下:

以下是引用片段:
<style type="text/css"> 
a {star : expression(onfocus=this.blur)} 
</style> 
<a href="link1.htm">link1</a> 
<a href="link2.htm">link2</a> 
<a href="link3.htm">link3</a>

  说明:里面的star就是自己任意定义的属性,你可以随自己喜好另外定义,接着包含在expression()里的语句就是JS脚本,在自定义属性与expression之间可别忘了还有一个引号,因为实质还是CSS,所以放在style标签内,而非s cript内。OK,这样就很容易地用一句话实现了页面中的链接虚线框的消除。不过你先别得意,如果触发的特效是CSS的属性变化,那么出来的结果会跟你的本意有差别。例如你想随鼠标的移进移出而改变页面中的文本框颜色更改,你可能想当然的会认为应该写为

以下是引用片段:
<style type="text/css"> 
input  
{star : expression(onmouseover=this.style.backgroundColor="#FF0000"; 
onmouseout=this.style.backgroundColor="#FFFFFF")} 
</style> 
<style type="text/css"> 
input {star : expression(onmouseover=this.style.backgroundColor="#FF0000"; 
onmouseout=this.style.backgroundColor="#FFFFFF")} 
</style> 
<input type="text"> 
<input type="text"> 
<input type="text">

  可结果却是出现脚本出错,正确的写法应该把CSS样式的定义写进函数内,如下所示:

以下是引用片段:
<style type="text/css"> 
input {star : expression(onmouseover=function() 
{this.style.backgroundColor="#FF0000"}, 
onmouseout=function(){this.style.backgroundColor="#FFFFFF"}) } 
</style> 
<input type="text"> 
<input type="text"> 
<input type="text">

  注意

  不是非常需要,一般不建议使用expression,因为expression对浏览器资源要求比较高。

实例:利用css里expression来实现界面对象的批量控制

      问题说明: 用过CSS样式我们就知道, 可以定义一批对象的class属性来指定同一个样式来统一界面. 但如何统一同类型的对象的事件? 比如:界面有无数个 <img src="**.jpg"> 如何实现鼠标经过此图片, 图片的src变成是**_over.jpg?
  

解决方法: 使用css的expression方法,
具体实现要看看.css的写法:

以下是引用片段:
/*替换图片CSS*/ 
#imgscript {     /*这里使用对象ID来通配样式, 也可以定义一个css函数*/ 
star:expression( 
      onmouseover = function() 
      {  
          /*替换图片*/ 
          if(this.hover != null){ 
            this.name = this.src; 
            this.src = this.src.replace('.jpg', '_over.jpg');  
            this.HasChg = 1; 
         } 
     }, 
     onmouseout = function() 
    {   
         /*还原本来的图片*/ 
       if(this.HasChg != null){ 
          this.src = this.name
          this.HasChg = null; 
      } 

)  
}/*end imgscript*/

--
we drink green tea