在webkit中使用apply / call on native JavaScript方法

时间:2011-08-06 02:33:42

标签: javascript webkit

我试图通过应用下面的代码调用addEventListener,但我在webkit的控制台中收到“TypeError:Type error”。

addEvent = (function (handler) {
  return function (element, event, fn) {
    handler.apply(element, [event, fn, false]);
  };
}(addEventListener || attachEvent));

我已经尝试过apply和call来调用方法,但无济于事。我是否遗漏了一些显而易见的事情或试图做某些我不知道的原因而不允许的事情?

另一篇文章正在谈论这一点,但不完全是我试图如何使用它; Using native code functions as JavaScript objects in WebKit

1 个答案:

答案 0 :(得分:1)

实现这一目标的另一种方法(正确 - 如Crescent Flash所述)如下:

addEvent = (function () {   
  return addEventListener ? 
    function (element, event, fn) {
      element.addEventListener (event, fn, false); 
    } :
    function (element, event, fn) { 
      element.attachEvent ('on' + event, fn); 
    };
}) ();

然后可以扩展它以减少两个事件模型之间的其他差异。