Javascript 单击文件输入按钮时,Chrome扩展页关闭

Javascript 单击文件输入按钮时,Chrome扩展页关闭,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我有以下用例: 在chrome扩展页面(即window.html)中,我需要显示一个链接/按钮,允许用户从本地系统选择一个或多个文件。这些文件将由插件加载和处理 方法:使用input type=file生成文件打开对话框,然后处理该输入的change事件 我的问题是: 当我单击弹出窗口中的按钮时,会出现“打开文件”对话框,但弹出窗口会隐藏起来,javascript代码也会消失。作为一种解决方法,如果我右键单击插件,选择“检查弹出窗口”,弹出窗口将不再关闭,按钮后面的脚本将运行 在用户选择文件后,

我有以下用例:

在chrome扩展页面(即window.html)中,我需要显示一个链接/按钮,允许用户从本地系统选择一个或多个文件。这些文件将由插件加载和处理

方法:使用
input type=file
生成文件打开对话框,然后处理该输入的
change
事件

我的问题是: 当我单击弹出窗口中的按钮时,会出现“打开文件”对话框,但弹出窗口会隐藏起来,javascript代码也会消失。作为一种解决方法,如果我右键单击插件,选择“检查弹出窗口”,弹出窗口将不再关闭,按钮后面的脚本将运行

在用户选择文件后,如何使javascript运行?(或防止弹出窗口关闭?)

代码片段(仅相关行)

window.html

 <input id="csv_multiple_load_win" type=file name=files[] multiple />
我尝试的是:

*从事件处理程序返回false

*在表单中包含
输入

*将加载脚本放在background.js中,就像前面提到的一样。我尝试了两种方法。问题中的那个和答案中的那个

*我试图手动生成某种类型的文件对话框(就像您在常规代码中所做的那样),但当我读到一些限制访问用户文件系统的安全策略时,我很早就放弃了

请帮忙

编辑:解决方案

正如@Xan所评论的,没有办法防止焦点丢失。当焦点丢失时,窗口关闭,javascript被终止。
我的解决方法是将代码放在另一对html/js文件中,即
new\u popup.html/js
。“new_popup.html”将包含
,您无法阻止弹出窗口在失去焦点时关闭,因此在常规文件中
s不起作用。你链接到的问题最接近于可能起作用的问题。因此,我们可以帮助你,最好是你向这个方向展示你的尝试。我还有两个方向需要探索:1)在新选项卡中打开一种仪表板,其中有我的“上传”按钮和其他信息;2) 使用chrome.fileBrowserHandler API。虽然我不确定第二种方法。我可以为1编写一些提示作为答案,2仅用于ChromeCheck,一些提示-您可以使用
chrome打开窗口。windows
带有类型弹出窗口,并且可以选择在顶部启用,以获得类似对话框的体验。
$( document ).ready(function() {
  ....
  $('#csv_multiple_load_win').bind('change', function(event){
  alert("Happy to process the "+event.target.files.length+" files!");
  });
  ....
}
var popup_url = chrome.extension.getURL("new_popup.html");
chrome.tabs.create({"url":popup_url}, function(tab){
    alert("Tab with id: "+tab.id+" created!");
}); 
chrome.windows.create({"url":popup_url, focused:true,type:'panel',
                       width:600, height:250},function(win){
     alert("Popup win created!");
});