一直以来都有一个计划在心里,就是给个人博客彻底换血,之前因为种种事情把事情一拖再拖…
庆幸的是,这次是玩真的了,新的网站将会在周末更新完毕,而原来的promiseforever系列域名将作为别名域名使用半年。
自动调整zindex数值不超过最大值
话说今天遇到一个需求,因为项目战线拉长之后,完成不是依靠一个两个同学的,可能很多,或由于历史原因,或由于编写者的代码习惯不同。
在细节上会出现冲突,比如使用javascript设置不同元素的zindex,javascript创建一个模态的覆盖层后,应该是zindex仅次于上一级要显示的内容。

但是如图所示,在showMask创建一个覆盖的浮层之后,有至少两个元素的zindex穿破了这个浮层。
如果强制更新css文件的话,未免工程量颇大,尤其是你要检查每一个带有zindex的元素(当然编写前应该有完整的zindex使用规范,可是实际操作的时候…)
言归正传,那么javascript就派出用场了。
在调用创建浮层的函数的尾部添加这个函数,即可把zindex设置特别大的元素调整的比浮层元素的zindex小10个数值。
代码十分简单,就不描述实现了。
需要注意的是,如果有特别需求,可以在关闭浮层的时候,把之前的元素的数值还原回去,图省事,使用全局变量即可。
|
1 2 3 4 5 6 7 8 9 10 |
function adjustzIndex(maxValue){ var a = document.getElementsByTagName('body')[0].getElementsByTagName('*'); for(var i=0;i<a.length;i++){ if('SCRIPT' != a[i].nodeName && a[i].style.zIndex){ if(maxValue<= a[i].style.zIndex){a[i].style.zIndex = maxValue -10;} //用于调试输出zindex数值 //console.log('zIndex: ',a[i].style.zIndex,'Index: ',i,' >>> ','Element: ',a[i],'Type:',a[i].nodeName); } } } |
输出页面所有宽度大于等于视区的元素
其实是求解,这个到底是神马bug。
明天到公司再想一想,这个到底是那里的问题,顺便改一下这个脚本,我的机器IE7的控制台是各种跑,各种死。
bug复现地址:http://sae.sina.com.cn/?m=front&a=rate
多谢chjund 提醒,document.width替换为document.body.clientWidth了。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
var a = document.getElementsByTagName('body')[0]; var a = a.getElementsByTagName('*'); var w = q = r =0,z=''; w = document.body.clientWidth; for(i=0;i<a.length;i++){ if(a[i].nodeName !='SCRIPT'){ r = a[i].offsetLeft+a[i].offsetWidth; if(w<=r) { q++ z += 'Overflow Element:@TYPE['+a[i].nodeName+'], @INDEX['+i+'], @VALUE['+r+']'+'\n' } } } console.log('Total Elements:',a.length,'(',(q/a.length*100).toFixed(2)+'%',')') console.log(z) |
淘宝UED趣味题
博客的新主题还是没写完,看官先将就看吧。
睡起来看到 @明杰 同学发来的淘宝UED趣味题,之前看到 @吴钊 大牛发了,但是是在手机上看到的,木有办法做-,-..
于是,试一试。
题目地址:
http://ued.taobao.com/quiz/
第一题很简单,不管是用F12看源码,还是右键看源码一目了然,但是呢,前端的话,文艺一点吧。
比如这样
|
1 |
document.location = document.getElementById('wrapper').getElementsByTagName('p')[0].innerText; |
如果你不习惯使用F12的console的话,那么在地址栏输入:
|
1 |
javascript:document.location = document.getElementById('wrapper').getElementsByTagName('p')[0].innerText; |
来到第二题的地址了吧.
页面中的字符串是下一题的答案,一眼就看出来需要在console中跑了吧,但是我要再文艺一点的说。
|
1 |
a="hostname,test,value,input,getElementsByTagName,nextQuiz,23805,http,protocol,location,reverse,join,split,w2YCcbRUXqx2COflFW6RWWkfXWO?/ziuq/moc.oaboat.deu//:ptth,GET,...".split(",");this[a[5]]=a[13][a[12]]("")[a[10]]()[a[11]]("");0; |
还是老规矩console的代码
|
1 2 |
var fir = document.getElementsByTagName('textarea')[0].textContent.split(';');eval(fir[0]);fir=eval(fir[1]); document.location =fir; |
当然,也还是有地址栏的版本-,-
|
1 |
javascript:var fir = document.getElementsByTagName('textarea')[0].textContent.split(';');eval(fir[0]);fir=eval(fir[1]);document.location =fir; |
接着是下一题了,这个题很有意思,你可以选择普通青年的margin-left + margin-top移动位置,然后等他跳转。
但是我想更文艺一点。
命令行使用:
|
1 |
document.location =document.getElementById('test').value.split('').reverse().join('').substr(7); |
浏览器使用:
|
1 |
javascript:document.location =document.getElementById('test').value.split('').reverse().join('').substr(7); |
最后一题了,继续文艺嘛
好吧,文艺一下,大概能猜到对面apache上脚本的算法了。
应该是
|
1 2 3 4 5 6 7 8 9 |
//PHP 伪代码 <?php if(!$_REQUEST['wl']){show_error();} //这个判断居然木有判断是否强制转为数字..至少我测试的时候,soulteary=soulteary也可以的说 if($_REQUEST['idx'] != $_REQUEST['r_idx']){show_error();}; //展示链接 echo 'http://ued.taobao.com/quiz/?PTaDwGiTs2JlfOC2xqTRRbQPYzK6FG4'; //r_weight这个参数是不是酱油-,-...目测去掉也行,不是取的时候忘记转类型,判断直接酱油了吧.. ?> |
那么,开始自动奔向答案吧!
console版本:
|
1 2 |
Libra.prototype.doSubmit =function () {$.ajax({type:"POST",url:"./?action=finish",data:"idx=5&r_idx=5&wl=1&r_weight=11",success:function(msg){document.location=msg;}});} var libra = new Libra($("#libra"));libra.doSubmit(); |
附上地址栏版本:
|
1 |
javascript:Libra.prototype.doSubmit=function(){$.ajax({type:"POST",url:"./?action=finish",data:"idx=5&r_idx=5&wl=1&r_weight=11",success:function(msg){document.location=msg}})};var libra = new Libra($("#libra"));libra.doSubmit(); |
好了,@明杰童鞋,我的文艺青年路线走完了。可惜我木有校园邮箱,吉利大学木有邮箱福利。
对了,淘宝UED的大大如果有富裕的书的话,能不吝送我一本,我也会很开心的说~
第七周总结
睡觉之前写一篇blog吧,记录一下这段时间的学习,@建梁 童鞋都认真的总结了,我再偷懒就不好了,不是嘛~~
以下内容..请看官各种省略..
Continue reading
计划
- 完成项目安排的Js编写(90%)
- 完成计划的dashboard设计(30%)
- 完成简版和手机版的设计 (10%)
- 整理个人作品和项目(0%)
- 把这个blog重构掉(10%)
- 去听一些公开课(0%)
有的事情,努力过,认真,过了。继续加油~
晚安,苏洋。
动态限制只能输入小数
一个坑爹的需求,javascript要求动态输出正确的浮点数。
思路也很简单,bind事件到input或者on事件里。
给出mootools的代码,JQ和DOM的类似。大致思路如下。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
function convertFloot(idName){ var xx = $(idName).get('value'); var textValue = xx.length; if (textValue<=1){ $(idName).set('value',xx.replace(/\D/,'')); } if(textValue>1){ var textTemp = $(idName).get('value'); $(idName).set('value',textTemp.substring(0,1)+textTemp.substring(1).replace(/[^0-9\.]/,'')); textTemp = $(idName).get('value'); $(idName).set('value',textTemp.replace(/[\.]{2,}/,'')); textTemp = $(idName).get('value'); if(textTemp.indexOf('.')!=-1){ var partA=null; var partB=null; partA = textTemp.substring(0,textTemp.indexOf('.')+1); partB = textTemp.substring(textTemp.indexOf('.')+1); partB = partB.replace(/[\.]/g,''); textTemp = partA+partB; $(idName).set('value',textTemp); } } } |
一些杂事
最近实在是想迁移blog,国内数据访问快好多,而且想顺便重写一下blog的前后端脚本。
无奈的是,事情一件接着一件,让我过的真的很充实,除了未来的选择之外,基本上无暇估计其他的事情了。
或者我还可以在忙碌点,多看看书,多散步锻炼锻炼身体。
不知不觉中又学到了很多细节,虽然这里没有特别彪悍的前端大牛带,基本都是自己去百度和找cherry哥,小达哥他们求解,但是有吕哥和其他的同事在教为人处事,在教开发规范等。
我觉得还是比较超值的。
闲下来的时候,和吕哥,建梁,鑫哥,明明兄,腾飞一起防猝死运动,聊聊生活中的细节,也很开心,甚至比熬出一段强壮无错的代码爽-。-~
还有就是最让我开心的一点,老妈的突击检查,我貌似合格了,真的是很难得,一直以来都是否定,虽然现在还是否定,但是已经改观不少了。
周末宅男打算尝试下野外真人CS,如果天气合适,如果周末没事,新的一周又开始了,时间过的真的好快。
加油~
一些小细节
jquery重复引用,不会出现dom ready2次的问题,mootools重复引用2个不同版本会出现此问题。
兼容,一些小问题在IE8,99的古怪模式下调试微距,虚拟机和ie tester中查看追踪效果,貌似感觉不错,但是效率还是过低。
st2越来越亲切,回头整理下插件吧。
某跨域的库变量写法不安全,回头反馈作者。
其他的还真忘记了,我要再备案,我要转回国内-。-~
哦,对了,老大是个心肠超好的胖纸,哈哈~~~
做个好梦
雨过天晴后,姐姐也妥妥的没事了。继半夜送童鞋去医院后,又增加了不少所谓的“阅历”,呵呵。
今天终于住到我的小家了,这是我第一个家,不论好坏,我打心底喜欢它。
不过比较可惜的是,或许这个阶段,从圆点开始的阶段,只有我一个人能慢慢体会,慢慢品味了。
放几张差不多整理好的图吧,再留念下我这什么都没有,一穷二白的开始吧~
Continue reading