Javascript 单击()按钮<;输入类型=";文件"/&燃气轮机;不打开文件对话框

Javascript 单击()按钮<;输入类型=";文件"/&燃气轮机;不打开文件对话框,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在制作一个chrome扩展,当我以编程方式单击file类型的输入时,会出现此警告,但当我在chrome控制台中执行此操作时,会打开文件对话框 这两种方法我都试过了 document.querySelectorAll('.text-xs-center.font-weight-bold.file-upload-center-table')[0].click() 及 它们都在控制台中工作,但当扩展名出现时,警告显示浏览器表示需要用户操作才能使用元素。在输入类型文件上单击()。所以,这需要包装在

我正在制作一个chrome扩展,当我以编程方式单击file类型的输入时,会出现此警告,但当我在chrome控制台中执行此操作时,会打开文件对话框

这两种方法我都试过了

document.querySelectorAll('.text-xs-center.font-weight-bold.file-upload-center-table')[0].click()


它们都在控制台中工作,但当扩展名出现时,警告显示

浏览器表示需要用户操作才能使用
元素。在输入类型文件上单击()
。所以,这需要包装在其他一些用户事件中。。。与单击其他按钮类似。错误表示此输入只能由物理用户单击。它在控制台中工作,因为devtools模拟物理用户交互。从理论上讲,扩展实现此功能的唯一可能方法是使用
chrome.debugger
API和CDP命令,但这将在整个浏览器中显示警告。@StackSlave我尝试过。。。但是在一些用户事件中包装它是不起作用的。@wOxxOm您能再简化一点吗?如何执行您建议的过程。为什么它会发生在某些特定的站点上,但对于其他站点,它会工作错误只有在没有与用户进行任何物理交互时才会发生()。如果用户在您的代码之前单击或按下此页面(或框架)内的某个键,则它将工作。关于代码,请自己寻找示例,我不会这样做,因为它需要测试。
document.querySelectorAll('.text-xs-center.font-weight-bold.file-upload-center-table')[0].dispatchEvent(new Event('click', { bubbles: true }));