瀏覽代碼

fix(iframe_api): prevents multiple execution of listeners per event

master
hristoterezov 8 年之前
父節點
當前提交
09d63d38ab
共有 1 個檔案被更改,包括 6 行新增1 行删除
  1. 6
    1
      modules/API/external/external_api.js

+ 6
- 1
modules/API/external/external_api.js 查看文件

173
 
173
 
174
     this.eventHandlers = {};
174
     this.eventHandlers = {};
175
 
175
 
176
+    // Map<{string} event_name, {boolean} postis_listener_added>
177
+    this.postisListeners = {};
178
+
176
     this.numberOfParticipants = 1;
179
     this.numberOfParticipants = 1;
177
     this._setupListeners();
180
     this._setupListeners();
178
 
181
 
328
     }
331
     }
329
     // We cannot remove listeners from postis that's why we are handling the
332
     // We cannot remove listeners from postis that's why we are handling the
330
     // callback that way.
333
     // callback that way.
331
-    if(!(event in this.eventHandlers))
334
+    if(!this.postisListeners[event]) {
332
         this.postis.listen(events[event], function(data) {
335
         this.postis.listen(events[event], function(data) {
333
             if((event in this.eventHandlers) &&
336
             if((event in this.eventHandlers) &&
334
                 typeof this.eventHandlers[event] === "function")
337
                 typeof this.eventHandlers[event] === "function")
335
                 this.eventHandlers[event].call(null, data);
338
                 this.eventHandlers[event].call(null, data);
336
         }.bind(this));
339
         }.bind(this));
340
+        this.postisListeners[event] = true;
341
+    }
337
     this.eventHandlers[event] = listener;
342
     this.eventHandlers[event] = listener;
338
     changeEventStatus(this.postis, event, true);
343
     changeEventStatus(this.postis, event, true);
339
 };
344
 };

Loading…
取消
儲存