日期:2014-05-16  浏览次数:20421 次

这个JS事件监听器不起作用了,怎么回事呢?
以下代码在上一个项目中用来监控 keydown 事件是有效的,为何改为监听 resize 就不行了呢?
$(function(){
//~~~~~~~~~~~~~~~~~~~~~ 窗体变化
if(document.addEventListener){
  document.addEventListener("resize",resizeHandler,true);
  }else{
  document.attachEvent("onresize",resizeHandler);
  }
});
function resizeHandler(event)
{
alert("重置尺寸事件"); //这语句没有执行到
var e = event || window.event;
//阻止冒泡
  if(e.preventDefault) e.preventDefault();
  else e.returnValue = false;
  if(e.stopPropagation) e.stopPropagation();
  else e.cancelBubble = true;
}


------解决方案--------------------
$(function(){
//~~~~~~~~~~~~~~~~~~~~~ 窗体变化
if(document.addEventListener){
window.addEventListener("resize",resizeHandler,true);
}else{
window.attachEvent("onresize",resizeHandler);
}
});
function resizeHandler(event)
{
alert("重置尺寸事件"); //这语句没有执行到
var e = event || window.event;
//阻止冒泡
if(e.preventDefault) e.preventDefault();
else e.returnValue = false;
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble = true;
}
但不知道为什么事件被激发两次,阻止冒泡不管用!
------解决方案--------------------
有些是window下的
最好监听window和document的resize
------解决方案--------------------
function init(){ 
//~~~~~~~~~~~~~~~~~~~~~ 窗体变化
if(document.addEventListener){
window.addEventListener("resize",resizeHandler,true);
}else{
window.attachEvent("onresize",resizeHandler);
}
}
function resizeHandler(event)
{
alert("重置尺寸事件"); //这语句没有执行到
var e = event || window.event;
if(e.preventDefault) e.preventDefault();
else e.returnValue = false;
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble = true;
}

</script>
</head>

<body onload="init()">
<img src="">
</body>
这样试试 ie可以 其他的都不行