在解决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>
这样就不行
建议用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
});
var e = e || event; ?
其实楼主可以找个JS的框架(jquery)等来写JS,这样的话,写起来更方便一点。
jquery 的mouseenter和mouseleve可以解决 但是只能放在 $(function(){...});中 w3c不支持mouseenter,
<div class="aa" mouseenter="..."></div>这样不行
FF的event需要传值进去的
dom.onclick = function(e){ e = e || window.event; var target = e.target || e.srcElement; }
请问楼主是在什么版本的IE浏览器里面做的测试?
这里做测试的时候没有发现问题,测试浏览器为:chrome23、IE9/8/7