2015-04-17 4 views
2

Я немного смущен. Я бы хотел, чтобы debounce функция resizeAd на размер окна. Я играл с этим кодом, но без каких-либо результатов. Отладка не выполняется. Как я должен назвать функцию debouncing в этом случае?Как отменить событие? (неправильный синтаксис?)

Функция дребезга работает отлично, называя их так: var resizeIframeAd = debounce(function() {... }

(function(window, document, undefined) { 
     'use strict'; 
     /* 
     * Global api. 
     */ 
     var adTech = window.adTech = { 
      get: function() { 
       return _instance; 
      }, 
      //Main entry point. 
      init: function(options) { 
       return _instance || new ADTECH(options); 
      } 
     }; 
     /** 
     * Constructor. 
     */ 
     var ADTECH = function(options) { 
      var defaultOptions = { 
       adID : '5202402', 
       hiddenClassName : 'hidden' 
      }; 
      this.options = this.extend(options, defaultOptions); 

      this.makeAd(); 
      _instance = this; 
      return _instance; 
     } 


    ADTECH.prototype = { 
     extend: function(source, target) { 
      if (source == null) { return target; } 
      for (var k in source) { 
      if(source[k] != null && target[k] !== source[k]) { 
       target[k] = source[k]; 
      } 
      } 
      return target; 
     }, 
     log: function(msg){ 
      if(window.console){ 
      console.log(msg); 
      } 
     }, 
     // Debounce function 
     debounce: function(func, wait, immediate) { 
      var timeout; 
      return function() { 
       var context = this, args = arguments; 
       var later = function() { 
        timeout = null; 
        if (!immediate) func.apply(context, args); 
       }; 
       var callNow = immediate && !timeout; 
       clearTimeout(timeout); 
       timeout = setTimeout(later, wait); 
       if (callNow) func.apply(context, args); 
      }; 
     }, 
     // event Handler 
     addEvent: function (elem, type, eventHandle) {  console.log("adEvent is undefined: ",eventHandle); 
      if (elem == null || typeof(elem) == 'undefined') return; 
      if (elem.addEventListener) { 
       elem.addEventListener(type, eventHandle, false); 
      } else if (elem.attachEvent) { 
      elem.attachEvent("on" + type, eventHandle); 
      } else { 
       elem["on" + type] = eventHandle; 
      } 
     }, 

//to debounce this fucntion I call them like this var resizeIframeAd = debounce(function() { HOW TO DO THAT HERE? 


     resizeAd: function(invokeLater) { 
      // this is explicitly set based on the calling object. 
      var obj = this; 
      var helper = function() { 
       obj.log("resizeAd2 done."); 
       //var ad = document.getElementById(obj.options.adID); //obj.log(ad); 
       obj.debounce(function() { 
        console.log("please debounce this function"); 
       }, 250) 
      }; 
      // if invokeLater is a falsey value do the resizing right away 
      // if it is truthy return helper so that it can be assigned as 
      // an event handler 
      return invokeLater ? helper : helper(); 
     }, 
     // insert ad 
     makeAd: function() { 
        this.addEvent(window, "resize", this.resizeAd(true)); 
     } 

    } 
     // Singleton 
     var _instance; 
    }(window, document)); 


    var API = adTech.init(); 
+0

Где у вас есть этот метод 'debounce' от? Вы сами это описали? – Bergi

+0

Что такое 'obj.debounce (function() {console.log (« пожалуйста, отмените эту функцию »);}, 250)' должен делать точно? Откуда это называется? – Bergi

+0

debounce задерживает именованную функцию. здесь на 250 мс. он называется здесь: this.addEvent (окно, «изменение размера», this.resizeAd (true)); – hamburger

ответ

1

Я думаю, что вы хотите дребезг вашей helper функции:

var helper = this.debounce(function() { 
    obj.log("resizeAd2 done."); 
    //var ad = document.getElementById(obj.options.adID); //obj.log(ad); 
    console.log("please debounce this function"); 
}, 250); 
Смежные вопросы