这是一个我已经设法通过暴力修复的错误,但我不明白为什么该解决方案有效。
问题是嵌入的 YouTube 视频无法在 iPad(在 iOS7 中测试)的横向 View 中的特定(响应式)网站上运行。我设法将其缩小到一个特定的 CSS 规则,该规则在浏览器足够宽时在标题中显示搜索输入,因此它会在 iPad 的横向 View 中显示,但不会在纵向 View 中显示。
经过一些暴力破解后,我发现从输入标签中删除 type="search"
(这会导致它退回到默认的 type="text"
) 将解决问题。我的搜索都没有给出为什么这有效的解释,甚至没有任何其他人遇到同样的事情。
关于错误的更多细节
该网站首先显示一张图片,点击后会通过 JavaScript 将其替换为 YouTube iframe。第一次点击后,它会在桌面浏览器上自动播放,而在 iPad 上它会加载视频但不会播放,直到用户再次按下它。
如果 type="search"
输入是可见的 (display: block;
),那么点击嵌入的视频将不会播放它;水龙头不会有明显的 react 。如果我放大并点击顶部的控件,例如视频的名称,我可以看到它们带有下划线,测试表明没有元素覆盖 iframe 和拦截事件。
奇怪的是,点击 iframe 右侧的边缘会导致视频开始正确播放。否则,将 iPad 更改为纵向 View (导致通过 CSS 隐藏搜索输入)将使点击 iframe 以开始播放视频。第一次点击后,无论搜索输入是否显示,所有视频控件都会起作用。
最佳答案
我自己亲身经历了这一点,我想对你写下这篇文章表示敬意。你的 SO 问题,即使没有答案,也为我指明了正确的方向。
就我而言,这与 Youtube 无关。我在一个大型站点中有一个由 Drupal 生成的页面,其中站点范围的搜索机制使用了一个自动完成的 drupal 模块,该模块将 type="search"
作为主要输入的类型。
在 IOS 中,用户报告说 Facebook、Twitter 和 Google Plus 各自的“喜欢”按钮都不起作用,页面中嵌入了一个更大的 Angular 应用程序。他们都使用 iframe,但似乎都没有响应点击。
将这个看似无害、无关的输入类型从 search
更改为 text
立即解决了这个问题。
莫名其妙。
关于ios - 当 HTML5 搜索输入可见时,嵌入式 YouTube 视频无法在 iPad (iOS 7) 上播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19507930/