diff --git a/js/chromium.js b/js/chromium.js index 77be8edc3..285986b07 100644 --- a/js/chromium.js +++ b/js/chromium.js @@ -133,6 +133,14 @@ return appWindow.contentWindow; }); } + }, + + beforeUnload: function(callback) { + if (chrome.runtime) { + chrome.runtime.onSuspend.addListener(callback); + } else { + window.addEventListener('beforeunload', callback); + } } }; diff --git a/js/panel_controller.js b/js/panel_controller.js index cb90602e3..60f920d64 100644 --- a/js/panel_controller.js +++ b/js/panel_controller.js @@ -92,7 +92,7 @@ windowMap.add({ windowId: windowInfo.id, modelId: modelId }); // close the panel if background.html is refreshed - window.addEventListener('beforeunload', function () { + extension.windows.beforeUnload(function() { // TODO: reattach after reload instead of closing. extension.windows.remove(windowInfo.id); }); @@ -125,7 +125,7 @@ inboxWindowId = windowInfo.id; // close the panel if background.html is refreshed - window.addEventListener('beforeunload', function () { + extension.windows.beforeUnload(function() { // TODO: reattach after reload instead of closing. extension.windows.remove(windowInfo.id); }); diff --git a/js/views/conversation_list_item_view.js b/js/views/conversation_list_item_view.js index 2eba025e2..de152b916 100644 --- a/js/views/conversation_list_item_view.js +++ b/js/views/conversation_list_item_view.js @@ -28,7 +28,7 @@ initialize: function() { this.listenTo(this.model, 'change', this.render); // auto update this.listenTo(this.model, 'destroy', this.remove); // auto update - window.addEventListener('beforeunload', function () { + extension.windows.beforeUnload(function() { this.stopListening(); }.bind(this)); }, diff --git a/js/views/inbox_view.js b/js/views/inbox_view.js index a4eec7f2a..e6e4d3718 100644 --- a/js/views/inbox_view.js +++ b/js/views/inbox_view.js @@ -73,7 +73,7 @@ new SocketView().render().$el.appendTo(this.$('.socket-status')); - window.addEventListener('beforeunload', function () { + extension.windows.beforeUnload(function() { this.inbox.stopListening(); }.bind(this)); },