js之event对象(二)
终于获取到了事件发生的对象了,用起来也就一句话:
- var eve = (window.event)?window.event:e;//或者下面更简洁~
- var eve=window.event||e;//现在兼容全部浏览器了
1.找到目标对象
- w3c标准:currentTarget,relatedTarget,target
- IE标准:fromElement,toElement,srcElemet
- 还是FF支持w3c,chrome两中写法都支持
这不算什么问题,用上面的方法判断即可,或者是:
- var ie=/msie/i.test(navigater.useragent);//判断IE先,
2.找到鼠标位置
- clientX,clientY--参考浏览器窗口--兼容IE,FF,chromet
- pageX,pageY--参考document对象--只有IE不支持
- screenX,screenY--参考浏览器屏幕--全部兼容
- offsetX,offsetY--参考事件目标对象--只有FF不兼容
以上四种足矣解决问题了~其他等等写法会有不同兼容问题,见到有人用的嗨,但不提出了,新学的时候,没找到一个好的教材,总结出这个,还真不容易~~第一二条结合起来可以满足任何需要了,其他的要用到的时候再测试~
3.scroll的值
- document.documentElement.scrollTop --FF&IE支持,chrome下为0;
- document.body.scrollTop --chrome支持,FF&IE下为0;
所幸即便不支持,也有个0值,用的时候直接document.documentElement.scrollTop+document.body.scrollTop便能解决问题
这样就可以简单的回到顶部了:
- obj.onclick = function(e){
- document.documentElement.scrollTop= 0;
- document.body.scrollTop=0;
- }
回到页面的某处用id标记即可<a href="#idname">toidname</a>,瞬间回到想要的地方,不过想要温柔的动画回去,就要用到上面的sroll值了。setTimeout吧。
- obj.onclick = function(e){
- var evt = window.event||e;
- function totop(){
- document.documentElement.scrollTop = document.documentElement.scrollTop - 20;
- document.body.scrollTop = document.body.scrollTop -20;
- if(document.documentElement.scrollTop>0|| document.body.scrollTop>0)
- setTimeout(totop ,10);
- }
- totop();
- }
现在可以温柔的回到顶部了,这种写法很直观,但有种不祥的预感,最后还可能给了document.?.scrollTop一个负数值~所幸,赋给它一个负数值,它扔等于0;控制动画接下来研究了~
4.监听onscroll事件,问题来了