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上倒是成功阻止了。
2017-06-23
ev.returnValue=false ?這個改成 window.event.returnValue=false
2016-11-04
可以阻止的,是因為你上面的代碼在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;
? ? ? ?}
? ?}
}