(расширение 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"));
};

0 ответов