窗口的事件侦听器内部的回调不起作用

时间:2014-06-05 03:36:10

标签: javascript call apply iife

(function(w,d,u){
    var k = function(cb){
        window.addEventListener('scroll',function(cb){
            var scrll = this.scrollY;
            if(cb){ 
                cb.call(this,scrll);
            }
        },false);
    };
    return (window.scrollex=k);
})(this,document);

当我尝试运行它时它根本不起作用。我一直得到undefined不是一个函数,为什么会这样?它是否与eventListener中的某些内容有关?或者我在函数内部传递了参数?这很疯狂我曾经多次使用它,现在似乎在eventListener中遇到了问题。

任何人都可以在这个问题上启发我吗?

现实生活示例

scrollr('element',{
  max:500,
  min:400,
  swing:50,
  name:"custom_event",
  dir:"left",
  trigger:"mousemove || scroll"
 },function(t,a,c){
    //t returns an object
    //a returns the current position of the trigger if it is a mousemove or scroll
    //c returns a boolean, which is if the element is inView of the viewport
  });

1 个答案:

答案 0 :(得分:1)

window.addEventListener('scroll',function(cb){  <--cb is an event object

摆脱变量

window.addEventListener('scroll',function(){

============

根据您的评论,我认为您不需要致电

cb.call(this,scrll);

只是做

cb.(scrll);