0

我第一次在 stackoverflow 上发帖,所以提前为协议中的任何失误道歉。

我正在创建一个 Django Web 应用程序,它有一个页面允许用户使用麦克风录制音频剪辑,然后将此剪辑保存到服务器。所以,用户流是:

  • 从包含过去录音列表的页面中,单击“新建”。
  • 您将被带到一个带有一些记录器控件的页面,您可以在其中点击“记录”。
  • 说几句。
  • 单击“停止”按钮,停止录制并提供“保存”按钮。
  • 点击“保存”按钮;弹出一个告诉您保存成功的弹出窗口,然后您将返回到带有录音列表的“索引”页面(您的最新录音在顶部)。

我正在使用Chris Rudmin 的 opus-recorder来处理录音,并编写了一些自定义 javascript 以将音频作为 blob 作为 XMLHttpRequest 发送回服务器。
服务器上有一个处理 POST 的 Django 视图,并返回带有成功/失败信息的 JSON。
回到客户端,向用户显示带有状态的警报,然后页面重定向(使用 window.location.href 和从服务器发送的 JSON 中的 url)到索引页面。

问题是: 我第一次加载页面时一切正常,包括保存记录和重定向到索引页面。但是,如果我现在从“索引”页面单击“新建”,当我返回录制页面时,它无法工作。控制台向我显示消息

Recording is not supported in this browser

现在,如果我注释掉正在执行重定向的 window.location.href,并手动输入索引页面的 URL,然后单击“新建”返回,一切正常。所以关于那个重定向的东西把事情搞砸了,但我不知道是什么。


更新

我尝试将 window.location.href 替换为

window.location.replace

window.location.assign

但这些都没有解决问题。

4

1 回答 1

0

我通过更换解决了我的问题

window.location.href

document.getElementById('home-link').click();

碰巧页面上有一个链接指向我想以编程方式导航到的页面,并且“单击”它似乎解决了我原来的问题(即随后导航回录制页面不再引发“录制不支持...”错误)。

于 2019-11-02T03:03:01.313 回答