我在stackoverflow上的第一篇帖子,因此提前为协议中的任何失误道歉
我正在创建一个Django web应用程序,该应用程序有一个页面,允许用户使用麦克风录制音频片段,然后将该片段保存到服务器。因此,用户流是:
- 从包含过去录音列表的页面中,单击"新建">
- 你被带到一个有一些录音机控件的页面,点击"录音">
- 说些什么
- 单击"停止"按钮,停止录制并显示"保存"按钮
- 点击"保存"按钮;得到一个弹出窗口,告诉你保存成功,然后你会被带回到"索引"页面,上面有录音列表(顶部是你的最新录音(
我使用Chris Rudmin的opus记录器来处理录制,并编写了一些自定义javascript,以将音频作为blob作为XMLHttpRequest发送回服务器
服务器上有一个Django视图,它处理POST,并发送回带有成功/失败信息的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
但这两者都没有解决问题。
我通过更换解决了问题
window.location.href
带有
document.getElementById('home-link').click();
碰巧页面上有一个链接指向我想通过程序导航到的页面,"点击"似乎解决了我最初的问题(即,随后导航回录制页面不再会出现"不支持录制…"错误(。