小编use*_*156的帖子

Audio.play() 在 Electron webview 中被拒绝并出现 NotSupportedError

我正在运行一个 Electron (v2.0.3) 项目,它在 web 视图中执行脚本。其中一个脚本是在一定条件下播放本地音频文件。

但是,如果在 Web 视图中调用音频播放,则音频播放会被拒绝,而如果调用index.html或播放在线音频文件而不是本地音频文件,则音频播放可以正常工作。

我已将nodeIntegrationwebview 设置为 true,并确保 webview 没有静音。我想这不是自动播放政策的问题,因为如果我将 YouTube 视频和在线音频(例如http://www.pacdv.com/sounds/ambience_sounds/air_hum.wav)加载到网络视图中,它们可以完美地工作。

另外,文件路径和文件本身没有问题,因为当我直接在index.html.

这是我的index.html

<head>
    <script>
        function init() {
            web.addEventListener("dom-ready", () => {
                web.executeJavaScript('<my-script>'); 
            }); 
        }
    </script>
</head>
<body onload="init(); ">
    <webview id="web" src="http://www.google.com" 
        style="width: 800px; height: 600px; "
        webpreferences="nodeIntegration=true"></webview>
</body>
Run Code Online (Sandbox Code Playgroud)

以下是 的内容<my-script>

let path = `file://${require("electron").remote.app.getAppPath()}/xxx.mp3`; 
new Audio(path).play().then().catch(ex => {
    document.body.innerHTML = ex; 
}); 
Run Code Online (Sandbox Code Playgroud)

之后Audio.play(),promise 被拒绝并显示错误消息:

NotSupportedError: Failed to load because …
Run Code Online (Sandbox Code Playgroud)

javascript electron

5
推荐指数
1
解决办法
1509
查看次数

标签 统计

electron ×1

javascript ×1