行如以下的代码:var _img = document.createElement("img");
_img.onmouseover = over;
_img.onmouseout = out;//另写处理函数
function over(){
 var event = arguments.callee.caller.arguments[0]||window.event;  //这里想获取到事件源,但程序会死在这行。
}在windows下可以获取到事件源,但firefox中arguments.callee.caller.arguments[0] 只支持带括号的调用,
比如
<img onmouseover="over();"/>  
如果用js绑定的over函数,就无法获得event.请问怎么写才能兼顾?

解决方案 »

  1.   

      $("#" + this.RegionTextList).bind('click', { obj: this }, function (event) {
            ShowRegionCheckBoxList(event.data.obj);
        })使用jquery的bind传递参数
      

  2.   

    <html><head>
    <script type="text/javascript" src="/jquery/jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){ var tb = document.getElementById("tb");
     tb.onmouseover = over;
     
    });function over(event){
      event = window.event || event;
      var srcEle = event.target || event.srcElement;
      alert(srcEle.innerHTML);
    }</script>
    </head><body><table id="tb">
      <tr><td>11111111111</td></tr></table>
    </body></html> 
     
      

  3.   


    _img.onmouseover = function(e){
            over(e);
    }//另写处理函数
    function over(e){
         var event = e||window.event;  //这里想获取到事件源,但程序会死在这行。
    }这样试试 。
      

  4.   

    原来这样定义函数就行啊,可是我有个疑问,这个event是必须写成"event"么?
    还有调用的时候并没有传参数,它从哪来的呢?
      

  5.   

    <input type="button" id="x" onclick="over()"/>
    <script type="text/javascript">
    function over(e){
     var e = window.event || e || arguments.callee.caller.arguments[0]
     alert(e)
    }
    </script>
      

  6.   

    window.event必须要完整写对,这个是IE下,事件触发时,事件对象会作为window的event属性储存,而其他浏览器则会把event作为参数传递给函数,这个时候可以任意名字。你调用的时候没有传递参数,但是事件触发时,浏览器会默认传递一个事件对象作为函数的第一个参数。
      

  7.   

    某些核心的浏览器 事件的调用者会吧 event对象作为参数传给事件的监听函数
    说某些是因为
    IE下面event是作为全局存在的 所以他不给监听的函数传event对象
    基本是这样可以参考下 观察者模式