Javascript 在chrome扩展中上载图像,扩展弹出窗口关闭

Javascript 在chrome扩展中上载图像,扩展弹出窗口关闭,javascript,file-upload,google-chrome-extension,Javascript,File Upload,Google Chrome Extension,我需要上传带有chrome扩展名的图像,当点击文件浏览器时,扩展名弹出窗口关闭。如何处理文件浏览器和弹出窗口以保持打开状态。这是一个很难回答的问题 其基本思想是,每当弹出窗口失去焦点时,它都应该立即关闭,这会破坏弹出窗口的JavaScript上下文(结果导致逻辑中断)。这是 模式对话框(如文件输入)应该是一个例外,但这并不能在Chrome运行的所有平台上保持一致。证据: 每当你想让某样东西在弹出窗口关闭后幸存下来,你通常会把它放在背景页上。这导致将文件输入放置在后台页面,并从弹出窗口触发其选择但

我需要上传带有chrome扩展名的图像,当点击文件浏览器时,扩展名弹出窗口关闭。如何处理文件浏览器和弹出窗口以保持打开状态。

这是一个很难回答的问题

其基本思想是,每当弹出窗口失去焦点时,它都应该立即关闭,这会破坏弹出窗口的JavaScript上下文(结果导致逻辑中断)。这是

模式对话框(如文件输入)应该是一个例外,但这并不能在Chrome运行的所有平台上保持一致。证据:

每当你想让某样东西在弹出窗口关闭后幸存下来,你通常会把它放在背景页上。这导致将文件输入放置在后台页面,并从弹出窗口触发其选择但有(未经证实)的证据表明这不再有效。上述问题还有另一个可能有效的答案,即将输入标记注入当前页面,但在“无法编写”的页面(如Chrome Web Store或内部
Chrome://
页面)上可能会失败


最安全的方法是打开一个单独的选项卡或弹出窗口来处理该过程。这显然是一个笨拙的用户体验。

不确定你是否真的想这样做,但如果你有一个小应用程序,而且它不是一个主要的壮举(或者你对chrome开发解决这个问题寄予厚望)-作为一个临时解决方案,你可以要求你的用户在上传文件时打开开发工具,弹出窗口不会关闭。 尽管您最好将逻辑放在一个单独的文件(例如“background.html”)中,然后从弹出窗口将其作为如下选项卡打开:

chrome.tabs.create({url: chrome.extension.getURL('background.html')});