# HG changeset patch # User Guido Berhoerster # Date 1588765355 -7200 # Node ID 3c97046c2348b80de956d7bed5ae4de50d271932 # Parent d863a1c9be152c3607cad7f357aa15832cf7a1ae Fix non-responsive buttons for managing feed readers In recent Firefox releases the "explicitOriginalTarget" property returns the associated form element instead of the originally clicked button so that the buttons for managing feed readers on the option page no longer worked. Determine the button used to submit the form using the "submitter" property of the new SubmitEvent instead. Add a polyfill for older Firefox releases not yet supporting this. diff -r d863a1c9be15 -r 3c97046c2348 options/options.js --- a/options/options.js Mon Oct 28 15:04:06 2019 +0100 +++ b/options/options.js Wed May 06 13:42:35 2020 +0200 @@ -29,6 +29,24 @@ feedReadersForm.elements['remove'].textContent = browser.i18n.getMessage('feedReaderRemoveButton'); feedReadersForm.addEventListener('change', this); + // FIXME remove once the Firefox ESR release supports SubmitEvent + if (typeof SubmitEvent === 'undefined') { + for (let element of [ + feedReadersForm.elements['move-up'], + feedReadersForm.elements['move-down'], + feedReadersForm.elements['remove'] + ]) { + element.addEventListener('click', ev => { + ev.preventDefault(); + let submitEvent = new Event('submit', { + 'bubbles':true, + 'cancelable':true + }); + submitEvent.submitter = ev.target; + feedReadersForm.dispatchEvent(submitEvent) + }); + } + } let addFeedReaderForm = document.forms['add-feed-reader']; addFeedReaderForm.elements['add'].textContent = @@ -225,7 +243,7 @@ ev.preventDefault(); let feedReaders = this.serializeFeedReaders(); - if (ev.explicitOriginalTarget.name === 'move-up') { + if (ev.submitter.name === 'move-up') { if (this.selectedFeedReader - 1 < 0) { // the first feed reader is selected return; @@ -235,7 +253,7 @@ [feedReaders[this.selectedFeedReader], feedReaders[this.selectedFeedReader - 1]]; this.selectedFeedReader--; - } else if (ev.explicitOriginalTarget.name === 'move-down') { + } else if (ev.submitter.name === 'move-down') { if (this.selectedFeedReader + 1 === feedReaders.length) { // the last feed reader is selected return; @@ -245,7 +263,7 @@ [feedReaders[this.selectedFeedReader], feedReaders[this.selectedFeedReader + 1]]; this.selectedFeedReader++; - } else if (ev.explicitOriginalTarget.name === 'remove') { + } else if (ev.submitter.name === 'remove') { feedReaders.splice(this.selectedFeedReader, 1); this.selectedFeedReader--; }