问答详情
源自:3-2 IE中的事件对象

IE阻止默认行为的代码是不是对IE10无效?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<div id="box">
<input type="button" id="btn1" value="按钮"  />
<a id="gop" href="事件处理程序(BUG).html">跳转页面</a>
</div>
<script type="text/javascript">
//事件对象
var btn1=document.getElementById('btn1');
var box=document.getElementById('box');
var gop=document.getElementById('gop');
btn1.addEventListener('click',showMes,false);
function showMes(ev){
	alert(ev.type);
//	var ele=ev.target;
	var ele=ev.srcElement;//IE访问事件标签
	alert(ele);
	alert(ev.target.nodeName);
//	ev.stopPropagation();//这行代码阻止了事件冒泡
	ev.cancelBubble=false;//IE浏览器阻止事件冒泡
}
function showBox(){
	alert("这个事件证实了事件冒泡");
}
//阻止事件冒泡
function stopGoto(ev){
	ev.stopPropagation();
//	ev.preventDefault();//阻止了默认行为,阻止标签a的跳转
	ev.returnValue=false;//IE阻止默认行为,对IE10貌似无效
}
box.addEventListener('click',showBox,false);
gop.addEventListener('click',stopGoto,false);
</script>
</body>
</html>

请看stopGoto这个函数,我在函数里写了ev.returnValue=false;这句话,想要阻止IE浏览器上a标签的默认行为,但是在IE10中运行的时候发现,没有成功阻止。chrome上倒是成功阻止了。

提问者:连枝 2016-11-04 10:57

个回答

  • 咖啡豆324
    2017-06-23 09:37:45

    ev.returnValue=false  这个改成 window.event.returnValue=false

  • 烟雨非飞
    2016-11-04 16:04:14

    可以阻止的,是因为你上面的代码在IE里面有报错,你代码里面没有用封装的方式都添加事件,在IE里面不能正确执行,所以,阻止不了,

    请使用封装好的工具对象:

    var EventUtil={
       addHandler:function(element,type,handler){
           if(element.addEventListener)
           {
               element.addEventListener(type,handler,false);
           }else if(element.attachEvent){
               element.attachEvent('on'+type,handler);
           }else
           {
               element['on'+type]=handler;
           }
       },
       removeHandler:function(element,type,handler){
           if(element.removeEventListener)
           {
               element.removeEventListener(type,handler,false);
           }else if(element.attachEvent){
               element.detachEvent('on'+type,handler);
           }else
           {
               element['on'+type]=null;
           }
       },
       getEvent:function(event){
           return event?event:window.event;
       },
       getType:function(event){
           return event.type;
       },
       getTarget:function(event){
           return event.target||event.srcElement;
       },
       preventDefault:function(event)
       {
           if(event.preventDefault)
           {
               event.preventDefault();
           }else
           {
               event.returnValue=false;
           }
       },
       stopPropagation:function(event)
       {
           if(event.stopPropagation)
           {
               event.stopPropagation();
           }else
           {
               event.cancelBubble=true;
           }

       }
    }