问题描述
以前和少接触JS 看了网上的一段代码 后面的三元表达式看懂了 还有几个疑问想咨询下大家 : 代码如下:window.onload=function(){ document.documentElement.onmouseup=function(e){ e=e||window.event; //alert(e.target); //alert("IE:"+e.srcElement); //alert(e.button+1); var p=e.target?e.button+1:(e.button & 1 ? 1 : ( e.button & 2 ? 3 : ( e.button & 4 ? 2 : 0 ) )); //统一输出:左1 中2 右3 if(p==3){ alert("33333"); } }} 第一个疑问就是 : document.documentElement.onmouseup=function(e){ e=e||window.event; 网页是不是会自动去判断 如果是IE下的 就走 window.event不是就直接 e=e 第二个问题: e.srcElement IE 下的对象 e.target FOX下的对象 这里他们的使用原理是什么? 谢谢大家了 百度了很久也没找到相关 !!!!
解决方案
1.e=e||window.event;这句话的意思,e对象存在时回返e,当window.event存在时返回event,这样就区分ff,ie了。2.这是一种规范,ie下支持e.srcElement,ff支持e.target,没啥原理。
解决方案二:
1.e=e||window.event; 就是或运算,结果返回不为undefined的那个值,如果2个都为undefined,则结果为undefined。2.实现方式不一样,也就是API不一样,跟原理扯不上关系