From 0c7d745074a2bfaa02391bb8935a45569a64e8de Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Mon, 9 Oct 2017 15:09:11 +0200 Subject: [PATCH] Fix contacts menu for IE11 IE11 triggers an 'input' event whenever an input is focussed or loses focus. Thus this causes an endless loading loop as soon as the view is re-rendered. To prevent this, this remembers the previous search term and ignores events where the term has not changed. Fixes https://github.com/nextcloud/server/issues/5281 Signed-off-by: Christoph Wurst --- core/js/contactsmenu.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/core/js/contactsmenu.js b/core/js/contactsmenu.js index 3da6ea127c..59f61a093e 100644 --- a/core/js/contactsmenu.js +++ b/core/js/contactsmenu.js @@ -286,6 +286,9 @@ /** @type {undefined|ContactCollection} */ _contacts: undefined, + /** @type {string} */ + _searchTerm: '', + events: { 'input #contactsmenu-search': '_onSearch' }, @@ -293,8 +296,16 @@ /** * @returns {undefined} */ - _onSearch: _.debounce(function() { - this.trigger('search', this.$('#contactsmenu-search').val()); + _onSearch: _.debounce(function(e) { + var searchTerm = this.$('#contactsmenu-search').val(); + // IE11 triggers an 'input' event after the view has been rendered + // resulting in an endless loading loop. To prevent this, we remember + // the last search term to savely ignore some events + // See https://github.com/nextcloud/server/issues/5281 + if (searchTerm !== this._searchTerm) { + this.trigger('search', this.$('#contactsmenu-search').val()); + this._searchTerm = searchTerm; + } }, 700), /**