瀏覽代碼

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

Loading…
取消
儲存