1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-09-15 07:22:28 +02:00

ensure no lost "change" events (#307)

This commit is contained in:
gorhill 2014-10-12 14:55:20 -04:00
parent e9ed073e42
commit 9e88d0f60d
2 changed files with 24 additions and 21 deletions

View File

@ -26,6 +26,7 @@
<div style="margin:1em 0 0 0;"> <div style="margin:1em 0 0 0;">
<p><button type="button" id="export" data-i18n="aboutBackupDataButton"></button> <p><button type="button" id="export" data-i18n="aboutBackupDataButton"></button>
<button type="button" id="import" data-i18n="aboutRestoreDataButton"></button> <button type="button" id="import" data-i18n="aboutRestoreDataButton"></button>
<input id="restoreFilePicker" type="file" accept="text/plain" style="display:none;">
<p> <p>
<p><button type="button" id="reset" data-i18n="aboutResetDataButton">Start from scratch...</button> <p><button type="button" id="reset" data-i18n="aboutResetDataButton">Start from scratch...</button>
</div> </div>

View File

@ -45,11 +45,7 @@ var exportToFile = function() {
/******************************************************************************/ /******************************************************************************/
var importFromFile = function() { var handleImportFilePicker = function() {
var input = document.createElement('input');
input.setAttribute('type', 'file');
input.setAttribute('accept', 'text/plain');
var fileReaderOnLoadHandler = function() { var fileReaderOnLoadHandler = function() {
var userData; var userData;
try { try {
@ -70,10 +66,8 @@ var importFromFile = function() {
} }
}; };
var filePickerOnChangeHandler = function() {
input.removeEventListener('change', filePickerOnChangeHandler);
var file = this.files[0]; var file = this.files[0];
if ( !file ) { if ( file === undefined || file.name === '' ) {
return; return;
} }
if ( file.type.indexOf('text') !== 0 ) { if ( file.type.indexOf('text') !== 0 ) {
@ -84,7 +78,14 @@ var importFromFile = function() {
fr.readAsText(file); fr.readAsText(file);
}; };
input.addEventListener('change', filePickerOnChangeHandler); /******************************************************************************/
var startImportFilePicker = function() {
var input = document.getElementById('restoreFilePicker');
// Reset to empty string, this will ensure an change event is properly
// triggered if the user pick a file, even if it is the same as the last
// one picked.
input.value = '';
input.click(); input.click();
}; };
@ -102,8 +103,9 @@ var resetUserData = function() {
uDom('#aboutVersion').html(chrome.runtime.getManifest().version); uDom('#aboutVersion').html(chrome.runtime.getManifest().version);
uDom('#export').on('click', exportToFile); uDom('#export').on('click', exportToFile);
uDom('#import').on('click', importFromFile); uDom('#import').on('click', startImportFilePicker);
uDom('#reset').on('click', resetUserData); uDom('#reset').on('click', resetUserData);
uDom('#restoreFilePicker').on('change', handleImportFilePicker);
/******************************************************************************/ /******************************************************************************/