我正在WebView中显示一个脱机本地文件页面。
在该网页中,我有一个脚本,其中包含以下片段:
var BUTTON_CLICK_SOUND = "UklGRkgDAABXQVZFZm10IB-trimmed-for-stackoverflow";
buttonClickSound = new Audio("data:audio/wav;base64," + BUTTON_CLICK_SOUND);
buttonClickSound.play();
它引发了异常:interface.js:525 Uncaught TypeError: buttonClickSound.play is not a function
at HTMLDivElement.<anonymous> (interface.js:525)
at HTMLDivElement.dispatch (jquery-3.1.1.js:5201)
at HTMLDivElement.elemData.handle (jquery-3.1.1.js:5009)
我通过google chrome远程开发工具查看了它,而刚创建的音频对象确实缺少播放功能。当我从远程网站运行该代码段时,它的运行情况很好。
这是我设置WebView的方法:
global::Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true);
mainBrowser = FindViewById<WebView>(Resource.Id.mainBrowser);
mainBrowser.SetWebViewClient(new MyWebViewClient());
mainBrowser.Settings.JavaScriptEnabled = true;
mainBrowser.Settings.MediaPlaybackRequiresUserGesture = false;
mainBrowser.Settings.DomStorageEnabled = true;
mainBrowser.Settings.AllowContentAccess = true;
如果我不得不猜测。这可能是因为它迫使MediaPlaybackRequiresUserGesture
安全,但是我不知道为什么从网站加载javascript文件时这不是问题。关于尝试从base64编码的字符串播放音频文件时,导致播放功能消失的原因有什么想法?
最佳答案
您可以预先在html中定义Audio标签,然后在audio元素上调用play()
。
<audio id="audio" >
<source src="xxx.mp3" type="audio/mpeg">
</audio>
document.getElementById('audio').play();
关于javascript - Xamarin WebView Audio.Play不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62554079/