4

我正在为客户开发一个网站,但我被困在这一点上,因为我们都能够在 Android 上的 Chrome 中重新创建这个问题。

无论出于何种原因,当我们在 Chrome 中的 Android 上加载此页面时:

http://miso.gostppro.com

视频加载器只是不停地旋转,视频永远不会播放。

并且点击它也不会做任何事情(不会开始播放,不会在 YouTube 应用程序中打开它,什么都没有)。

它在其他浏览器中运行良好(Firefox for Android 加载并播放它很好),所以我对为什么会发生这种情况感到困惑。

我错过了什么?

是API中的一些调用还是什么?

我迷路了。

4

2 回答 2

5

简而言之,它不会起作用。引用文档

在某些移动浏览器(例如 Chrome 和 Safari)中,HTML5 元素仅允许在由用户交互(例如点击播放器)启动的情况下进行播放。(...) 由于此限制,自动播放、 playVideo()、loadVideoById()等函数和参数无法在所有移动环境中工作

您正在调用event.target.playVideo();您的onPlayerReady处理程序,这在移动环境中是不允许的,并在控制台中引发警告(以供将来参考 - 我强烈建议在 Chrome 中使用远程调试)。

所以,回到你的问题 - 我只是摆脱onPlayerReady处理程序并使用autoplayplayer 变量。它应该可以在台式机上运行,​​也不会破坏移动设备上的播放器。

于 2016-04-26T12:48:52.420 回答
0

我在运行 Android 5.1.1 的 Nexus 5 上测试了您的网页,发现了一些问题:

首先我收到了这个错误:

无法在“DOMWindow”上执行“postMessage”:https: //www.youtube.com !== http://miso.gostppro.com

我认为这是一个 http vs https 错误,但是在我刷新错误页面后,我看到了一个新警告:

无法在“HTMLMediaElement”上执行“播放”:API 只能由用户手势启动。

正如 jkondratowicz 的回答所指出的,这是移动浏览器不允许在 HTML5 视频上自动播放的副产品。我能想到的唯一想法是删除任何与播放器和自动播放参数相关的 JavaScript,并允许用户在准备好时手动开始视频播放。

play()通过向 iframe上调用的页面加载事件添加侦听器,我也得到了混合结果:

function callback () {
    document.querySelector('ytplayer').play();
}

window.addEventListener("load", callback, false);
于 2016-04-26T14:51:29.923 回答