首页 新闻 会员 周边

js冒泡涉及到的 event兼容性

0
[已解决问题] 解决于 2013-04-25 16:40

在解决js事件冒泡 问题时 用到了 event 可是ff不支持window.event  我用了

e?e:(window.event?window.event:null) 确实可以区别,但是if 。。。else。。判断时会报错或不执行 ,比如 先判断ff ,那么else的ie就会不执行或报错。

我的解决方法是,通过浏览器判断 来选择执行的。

不知道有没有更好的方法  ,希望各位大神指教!!

问题补充:

window.onload = function() {
    var obj = document.getElementById("fff");
    var msg = document.getElementById("msg");
   obj.onmouseover = function(e) {
      if (e) {
        if (obj.contains(e.relatedTarget)) {
          return;
        }
      } else if (event) {
        if (obj.contains(event.fromElement)) {
          return;
        }
      }
      msg.innerHTML += '我进来了<br/>';
    }

这样可以 。

 

 function div_over(t,e)
     {
       if (e)
       {
        if (t.contains(e.relatedTarget))
         {
          return;
        }
       }
        else if (event)
         {
        if (t.contains(event.fromElement))
          {
          return;
          }
        }
      msg.innerHTML += '我进去了<br/>';
     }

 <div class="aaa" onmouseover="div_over(this,event)"></div>

这样就不行

封の城哀的主页 封の城哀 | 初学一级 | 园豆:182
提问于:2012-08-09 12:04
< >
分享
最佳答案
0

建议用jquery框架来写这个脚本 阻止事件冒泡 jquery有对应的方法  例如

<div id="box1" style="width:300px;height:300px;padding:10px;border:solid 1px red">

  我是box1

  <p id="p1" style="width:200px;height:200px;padding:10px;border:solid 1px blue">

    我是p1

    <span id="span1"  style="border:solid 1px green">我是span1</span>

   </p>

</div>

$("#box1").bind("click",function (){

alert("我是box1")

});

$("#p1").bind("click",function (){

alert("我是p1")

});

$("#span1").bind("click",function (e){

alert("我是span1")

e.stopProagation();//这样就阻止了点击span1时事件冒泡去执行p1的点击事件和box1的点击事件。弹出结果为 :span1

});

奖励园豆:5
JCWK | 初学一级 |园豆:68 | 2013-04-25 16:21
其他回答(4)
0

var e = e || event; ?

张坤 | 园豆:1865 (小虾三级) | 2012-08-09 12:10
0

其实楼主可以找个JS的框架(jquery)等来写JS,这样的话,写起来更方便一点。

chenping2008 | 园豆:9836 (大侠五级) | 2012-08-09 13:38

jquery 的mouseenter和mouseleve可以解决 但是只能放在 $(function(){...});中 w3c不支持mouseenter,

<div class="aa" mouseenter="..."></div>这样不行

支持(0) 反对(0) 封の城哀 | 园豆:182 (初学一级) | 2012-08-17 09:45
0

FF的event需要传值进去的

dom.onclick = function(e){
    e = e || window.event;
    var target = e.target || e.srcElement;
}
Lecaf | 园豆:352 (菜鸟二级) | 2012-11-06 15:20
0

请问楼主是在什么版本的IE浏览器里面做的测试?

这里做测试的时候没有发现问题,测试浏览器为:chrome23、IE9/8/7

程序猿小卡 | 园豆:386 (菜鸟二级) | 2012-12-08 11:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册