WKWebView中嵌入式YouTube视频的全屏模式已禁用

And*_*nko 7 youtube ios wkwebview

我正在尝试将YouTube视频嵌入加载到的网页中WKWebView

这是页面来源:

let html = """
<html><head>
<title>YouTube Video</title>

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, shrink-to-fit=no, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge">

</head>
<body>
  Here is an embedded youtube video: <br/> 
  <iframe src="https://www.youtube.com/embed/oR-6N1Dc_zc?modestbranding=1&rel=0" frameborder="0" allowfullscreen></iframe> 
  <iframe src="https://player.vimeo.com/video/270611565" width="640" height="360" frameborder="0" allowfullscreen></iframe>
</body>
</html>
"""
Run Code Online (Sandbox Code Playgroud)

WKWebView的配置接近默认值(allowsInlineMediaPlayback已启用)。该网页已加载webView.loadHTMLString(html, baseURL: nil)

YouTube播放器中的全屏模式按钮显示为灰色。当我单击它时,将显示以下消息:“您的浏览器不支持全屏。”:

影片播放器讯息

如果我UIWebView改为使用,则会收到相同的消息。全屏模式似乎适用于嵌入式Vimeo视频(尽管Vimeo播放器似乎忽略了的allowfullscreen属性iframe)和使用<video>标记嵌入式视频。当我从YouTube网站加载视频时,可以使用全屏模式(尽管它看起来更像是一种模拟,而不是纯全屏模式)。

问题是:为什么全屏模式被禁用,并且有启用它的方法?

小智 7

您可以通过禁用内联媒体来解决该问题。

let webViewConfiguration = WKWebViewConfiguration()
webViewConfiguration.allowsInlineMediaPlayback = false
WKWebView(frame: .zero, configuration: webViewConfiguration)
Run Code Online (Sandbox Code Playgroud)