(расширение chrome) не может выбрать файл из файла ввода в popup.html, если не открыт DevTools
У меня очень странная ситуация с расширением Chrome. страница popup.html содержит элемент ввода файла, но при щелчке по нему открывается файловый браузер, но выбор файла не оказывает никакого влияния (например, событие "изменение" не запускается, а имя файла не отображается в элементе ввода файла),
но когда я щелкаю правой кнопкой мыши по значку расширения и выбираю "проверить всплывающее окно" и снова пытаюсь выбрать файл, неожиданно работает элемент ввода файла и запускается событие "изменить".
Ниже приведены файлы расширения. загрузите расширение и щелкните значок расширения, чтобы увидеть элемент ввода файла. нажатие на ввод файла покажет браузер файлов, но не выберет файл. щелкните правой кнопкой мыши значок расширения и выберите "осмотреть всплывающее окно", чтобы открыть всплывающее окно. Теперь элемент ввода работает, просто открыв всплывающее окно. конечно, вам нужно посетить " https://developer.chrome.com/ " из-за ограничения Pageurl на background.js
использование jquery не имеет никакого эффекта.
manifest.json
{
"name": "hello world",
"version": "1.0",
"description": "hello world",
"permissions": ["activeTab", "declarativeContent"],
"background": {
"scripts": ["background.js"]
},
"page_action": {
"default_popup": "popup.html"
},
"manifest_version": 2
}
background.js
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([{
conditions: [new chrome.declarativeContent.PageStateMatcher({
pageUrl: {
hostEquals: 'developer.chrome.com',
}
})
],
actions: [new chrome.declarativeContent.ShowPageAction()]
}]);
});
popup.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input id="file-input" type="file" name="form_file">
<div class="debug"></div>
<script src="popup.js"></script>
</body>
</html>
popup.js
document.getElementById('file-input').onchange = function(ev){
document.querySelector('.debug').appendChild(document.createTextNode("change event fired"));
};