【问题标题】:Cannot complete download from popup when prompting location with saveAs使用 saveAs 提示位置时无法从弹出窗口完成下载
【发布时间】:2019-10-15 21:21:24
【问题描述】:

我一直在开发一个浏览器扩展程序,允许用户从任何网页生成 epub 文件。

要使用该扩展程序,用户必须单击工具栏按钮,该按钮会打开一个弹出窗口。在后者上,在指定配置后,用户单击“生成”。这是我的问题:

当我直接使用下载API,并且saveAs指定为false(即不提示用户保存文件的位置)时,下载按预期完成并保存文件在某个位置。

但是,当我将 saveAs 设置为 true --- 这就是我在最终版本中想要的 --- 之后,一旦用户选择了保存文件的位置,下载就会失败。我的直觉是,一旦文件位置窗口弹出,弹出窗口就会失去焦点并死掉,这使得下载无法恢复。

这就是解释吗?有没有办法防止这样的问题?我发现我的用例并没有太大的延伸,也不明白为什么不允许与浏览器操作相关的弹出窗口放松文件选择的焦点。

另一个奇怪的事情是,我很确定这个问题最近才出现在 Firefox 中,因为当我开始开发扩展程序时,我没有遇到任何问题。

【问题讨论】:

    标签: firefox firefox-addon firefox-addon-webextensions


    【解决方案1】:

    我的直觉是,文件位置窗口一弹出, 弹出窗口失去焦点并死亡,这使得下载无法 继续。

    没错……

    Browser Action Popup 是页面,一旦页面关闭,异步操作将失去参考。最好将异步操作传递给后台脚本。

    • 您可以使用 runtime.sendMessage() 将消息传递给后台脚本以运行下载。
    • 您也可以使用异步 runtime.getBackgroundPage() 在后台脚本中运行一个函数,但第一个选项有效 更容易,因为您不需要像 runtime.getBackgroundPage() 那样等待异步响应

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      相关资源
      最近更新 更多