日期:2014-05-18  浏览次数:20705 次

javascript方面的问题,但是在JS区一直没人回答,求帮忙
是关于浏览器兼容的,因为IE跟DOM标准不一样,有些代码写法不一样,所以会写这样的兼容语句
JScript code

d=e?e:event;


但是这个三目运算不是判断e的bool值然后确定是e还是event吗?
然后我就写了这样一段
JScript code

<script>
    document.onclick=function(e)
    {
        d=e?e:event;
        if(d==e)
        {alert("this is e!!");}
        if(d==event)
        {alert("this is event");}
        
        alert(d.clientX+":"+d.clientY);
    }
</script>



就是一个单击事件,然后看d到底是为e还是event,我在360极速浏览器和ie9下测试
360极速浏览器会一次弹出this is e!!  
this is event 跟坐标

而IE9则只弹出this is e!!跟坐标

我混乱了,为什么极速浏览器会把e跟event两个值都显示呢?
那这里的e到底是个什么类型的数据,e? 判断的又是什么...

下面那个是javascript区的帖子连接
http://topic.csdn.net/u/20120714/19/6ba18b2f-e876-4df9-8639-b46de11139b3.html?28446

------解决方案--------------------
写法有问题 你这样变成2个变量了 如果2个相等 则自然弹2次
JScript code

function(e)
    {
        e=e||window.event;
        if(window.event)
        {alert("this is event!!");}
        else
        {alert("this is e");}
        //下面这个 也未必兼容
        alert(d.clientX+":"+d.clientY);
    }

------解决方案--------------------
两个都弹出说明e和event是一个东西
------解决方案--------------------
e是event的时候,你的运算符只会判断e是否是null值,和e是不是bool没关系,别忘了js是弱类型的。