javascript - Xamarin WebView Audio.Play不起作用

标签 javascript c# xamarin audio webview

我正在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/

相关文章:

android - 如何在 Android (Xamarin) 中以编程方式从当前主题中获取颜色

相当于@SuppressWarnings的Javascript?

c# - 枚举是否应具有未初始化的值。

javascript - 滚动宽度总是返回未定义

c# - 将接口(interface)或类的已实现 IEnumerable 声明为已过时

C# 在列表中添加委托(delegate)

android - 自动滚动到 RecyclerView 底部

c# - 如何在遵循 MVVM 格式的同时访问子 ViewModel 中的事件

javascript - 无法在 jsfiddle 上复制这种水平视差效果

javascript - 使用新窗口而不是网络 worker