开发过程中用到了ajax异步加载,加载回来的data是一部分html代码页面,这个页面包括一个js需要调window.event对象,但是提示js错误,window.event缺少对象。求助各位大虾啦~~ 以下这个是发ajax异步的函数: function   doAjax(){ 
        ...... 
        $.ajax({ 
                beforeSend:   function(){ 
                ...... 
        }, 
        success:function(data){ 
                ...... 
                $( '#dataContainer_id ').html(data);//加载传回来的页面 
                ...... 
        }, 
        error:function(){ 
                ...... 
        } 
        }); 
...... } 
返回来的data页面包含一个onClick的js函数,需要调外层页面的js,如下: 
function   viewDoubts(id){ 
        var   w   =   300;       //   宽度 
        var   h   =   400;       //   高度 
        alert( "window.event= "+window.event);         //运行结果:window.event=null 
        alert( "event.screenX= "+event.screenX); //运行结果:缺少对象 
        var   x   =   event.screenX   -   event.offsetX   -   w/2;       //   +   deltaX; 
        var   y   =   event.screenY   -   event.offsetY   +   20;         //   +   deltaY; 
        ...... 
} 运行结果是缺少对象,检验出是window.event对象为null。 尝试过不通过ajax直接调window.event是成功的。 大虾门,怎么解决? 

解决方案 »

  1.   

    你用的是什么浏览器?window.event只有IE才支持!
      

  2.   

    function viewDoubts(e,id){ 
     var e=e||windown.event;
      var w = 300; // 宽度 
      var h = 400; // 高度 
      alert( "window.event= "+e); //运行结果:window.event=null 
      alert( "event.screenX= "+e.screenX); //运行结果:缺少对象 
      var x = event.screenX - e.offsetX - w/2; // + deltaX; 
      var y = event.screenY - e.offsetY + 20; // + deltaY; 
      ...... //如果后面还有代码,将代码里所有的window.event或event改为e
    }  
      

  3.   

    多谢1楼和2楼两位,window.event确是IE有的对象。开发过程用的是IE6,已经找到问题产生的原因。window.event对象只在事件发生的过程中才有效,本例中ajax返回的data中调用的js写法如下:......
    <a href="javascript:viewDoubts('<%=doubtsId%>')">...</a>    //这里没有onClick事件
    ......上例写法在执行过程中没有onClick事件,所以没有能使window.event对象有效的事件发生。修改后如下:......
    <a href="#" onClick="javascript:viewDoubts('<%=doubtsId%>')">...</a> 
    ......谢谢两位!