给他继承 就OK!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
<script>
function alertHello()
{
  alert("hello");
}function function_proxy(ori_function){
  function dest_function(){
    alert("come proxy");
    ori_function();
  }  return Object.extend(dest_function,ori_function);
}function addAlertHello(){
  var t = document.getElementById("div_toclick");
  var b = alertHello;
  b.id ='aa';
  var tmp_b = b;
  b = function_proxy(b);
  alert(b.id)
  //t.addEventListener("click", b, false);
  //b = tmp_b;
}Object.extend = function(des,source){
for(var p in source){
des[p] = source[p];
}
return des;
};
</script>
 </HEAD>
<body>
<div id="div_toclick" > Click Me Div</div>
<input type=button value = "add Click Event To Div" onclick="addAlertHello()">
</body> 
</HTML>

解决方案 »

  1.   

    t.addEventListener("click", b, false);
    t 没有这个函数...
      

  2.   

    试了一下,还是不行:function_proxy = function(ori_function) {
      function dest_function(){
        ori_function();
      }  for( var p in ori_function) {
        dest_function[p] = ori_function[p];
      }
      //return ori_function;
      return dest_function;
    }  
    如果是:return ori_function;
    页面就可以正确执行
      

  3.   

    添加2个事件函数就行了t.addEventListener("click", a, false);
    t.addEventListener("click", b, false);
      

  4.   

    再添加了一个事件响应之后不好使,我的函数响应了,而google原来的函数没有响应,好像google做了一个event_proxy什么的addEventListener函数bubble和非bubble两种方式都试了
      

  5.   

    我实现的演示如下代码所示,现在实际运行中有一个问题就是:我返回的这个dest_function虽然会去执行ori_function,但它并没有ori_function的那些属性,因此没法运行下去。请问:怎么把ori_function的属性全部弄成dest_function;中去?谢谢! 
     这步已经完成。
    t.addEventListener("click", b, false); 
    t 没有这个函数...你在什么下面测的。   不会是IE吧???
      

  6.   

    我给一种代理的方法吧
    <script type="text/javascript">function proxy(fn){


    var proxy =  function(){ 

    alert("this is proxy");

    return fn.apply(this, arguments); 

    }

    return proxy;
    }

    function alertHello(e)
    {
    alert("this is " + e);
       alert("hello");
    }
    function addAlertHello(){
      var t = document.getElementById("div_toclick");
      var b = alertHello;
      var tmp_b = b;
      b = proxy(b);
      t.addEventListener("click", b, false);
      b = tmp_b;
    }
    </script><body>
    <div id="div_toclick" > Click Me Div</div>
    <input type=button value = "add Click Event To Div" onclick="addAlertHello()">
    </body>
      

  7.   

    你代码中添加事件的方式是w3c的方式,不能在ie下运行,这个我没有改
      

  8.   


    不是我回复的啊我在firefox下测的
      

  9.   


    好,用firebug劫持函数的时候也是这样子做的
    刚才试了一下,效果和添加两个事件函数:t.addEventListener("click", a, false);
    t.addEventListener("click", b, false); 
    一样,我的函数响应了,而google原来点击"免费订阅"的函数没有被执行,不知道为什么
      

  10.   

    那个回复不是我回的,是 #zliu789 回的
    我在firefox下试的