我第一次在 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
但这些都没有解决问题。