Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让Chrome和/或Firefox播放<;音频>;业力测试中的元素?_Javascript_Google Chrome_Firefox_Karma Runner_Html5 Audio - Fatal编程技术网

Javascript 如何让Chrome和/或Firefox播放<;音频>;业力测试中的元素?

Javascript 如何让Chrome和/或Firefox播放<;音频>;业力测试中的元素?,javascript,google-chrome,firefox,karma-runner,html5-audio,Javascript,Google Chrome,Firefox,Karma Runner,Html5 Audio,我正在开发一个库,它可以从HTML5中提取音频,一旦它们连接到上,就会立即获得音频流,但它仍然有点混乱,并且当前配置为跳过可能失败的测试。如果有必要,我会尝试建立一个简单的例子,但我希望我不需要这样做 如果有什么不同,我会使用OSX。我还没有在Windows或Linux上尝试过这一点。一些浏览器实现会阻止自动播放的尝试,但它们都试图绕过设计的功能,可能在多个浏览器/设备之间不太可靠 根据您的设置和目标浏览器,您可能需要在测试中加入“单击开始”按钮。找到它,至少对于firefox是这样元素显然比我

我正在开发一个库,它可以从HTML5
中提取音频,一旦它们连接到
上,就会立即获得音频流,但它仍然有点混乱,并且当前配置为跳过可能失败的测试。如果有必要,我会尝试建立一个简单的例子,但我希望我不需要这样做


如果有什么不同,我会使用OSX。我还没有在Windows或Linux上尝试过这一点。

一些浏览器实现会阻止自动播放<代码>的尝试,但它们都试图绕过设计的功能,可能在多个浏览器/设备之间不太可靠


根据您的设置和目标浏览器,您可能需要在测试中加入“单击开始”按钮。

找到它,至少对于firefox是这样<代码>
元素显然比我意识到的有更强的CORS规则!我在我的文件服务器上设置了一个
访问控制允许源:
头,因为我知道它位于Karma运行我的测试的另一个端口上,但显然这还不够

我似乎在任何地方都找不到关于这个的任何文档,但我碰巧注意到关于CORS的一个chrome错误,并做了更多的挖掘和实验。似乎跨域
元素的脚本处理器需要与
标记在
中使用其内容所需的
跨源
属性相同

所以,最后,从

在firefox中为我解决了这个问题,chrome有时可以工作,但似乎还有一些其他问题(可能与加载时间有关?)

我相信chrome的第二个问题是,我当时正在立即调用
.play()
,然后在测试发出
结束
事件时结束测试。。但当缓冲区为空时,该事件似乎也会触发,我认为这是一个bug。在调用
.play()
之前,我将其更改为等待
canplaythrough
事件,现在它似乎可靠地通过了测试

  var audioElement = new Audio();
  audioElement.src = "http://localhost:9877/audio.wav";
  var audioElement = new Audio();
  audioElement.crossOrigin = "anonymous";
  audioElement.src = "http://localhost:9877/audio.wav";