Ввод файла во всплывающем окне с расширением Chrome

Я хочу, чтобы пользователь мог загружать текстовые файлы в качестве ввода черезbrowserAction всплывающее окно для моего расширения, но я столкнулся с небольшой проблемой.

Я использовал скрытыйinput тег, с помощью которого я запускаюclick() когда пользователь нажимает кнопку загрузки файла. Откроется диалоговое окно файлового браузера, и все работает нормально, пока само всплывающее окно не закроется. И из-за «веб-страницы», содержащейinput закрытие тега,change событие никогда не срабатывает.

Поскольку расширение уже имеет фоновый скрипт для заполнения всплывающего окна постоянными данными, я решил, что могу создатьinput в фоновом режиме скрипт и триггертот с.click() когда пользователь нажимает кнопку загрузки файла во всплывающем окне.

Но, хотя событие click срабатывает дляinput в фоновом скрипте диалоговое окно браузера файлов не открывается.

Я полагаю, что причина этого в том, что Chrome не позволяет вводить файл программно, если только это не из-за действий пользователя, но я не уверен. Вот как я пытался;

popup.js

//Button in popup which should open file broswer dialog
//when clicked
browseBtn.addEventListener('click', function() {
    chrome.runtime.sendMessage({msg: 'file_input'});
}

background.js

var fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.accept = 'text/*';

fileInput.addEventListener('click', function(e) {
    console.log('fileInput clicked');
}, false);

fileInput.addEventListener('change', function(e) {
    console.log('fileInput changed');
    console.log(this.files);
}, false);

chrome.runtime.onMessage.addListener(function(e) {
    if(e.msg === 'file_input')
        fileInput.click();
});

Я знаю чтоclick событие вызвано, потому чтоfileInput clicked зарегистрирован Но диалог файлового браузера не открывается.

Я также попробовал вариант этого кода, используяchrome.extension.getBackgroundPage() напрямую позвонитьfileInput.click(), Снова,click событие было запущено, но диалог не открылся.

Мой вопрос Есть ли способ разрешить фоновый скрипт для запуска файлаinput открыть диалог браузера файлов? Это было бы лучшим решением, потому что это позволило бы расширению извлекать данные из указанного файла, даже если всплывающее окно закрывалось каким-либо образом.

Если нет, есть ли способ избежать закрытия всплывающего окна при открытии диалогового окна файлового браузера? Из того, что я нашел, используя скрытыйinput Предполагалось, что тег будет обходным путем, и он работает в некоторых случаях, но не для всех пользователей.

Например, я смог загрузить файлы без закрытия всплывающего окна в Chrome, Windows 7. Но в Chromium, Ubuntu 14.04, всплывающее окно закрывается в тот момент, когда открывается диалоговое окно файлового браузера.

Любая помощь приветствуется.

Ответы на вопрос(1)

Ваш ответ на вопрос