Javascript记录器第一次工作,但在页面重定向后错误"Recording not supported in this browser"



我在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();

碰巧页面上有一个链接指向我想通过程序导航到的页面,"点击"似乎解决了我最初的问题(即,随后导航回录制页面不再会出现"不支持录制…"错误(。

最新更新