gpt4 book ai didi

javascript - Youtube iFrame API pauseVideo 在 UIWebView 中未定义

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:05 26 4
gpt4 key购买 nike

我正在为 iPad 开发一个应用程序,其中包含嵌入在 UIWebView 中的一个或多个 youtube 视频。我正在使用 Youtube iframe API。视频显示正常,用户可以正常使用正常控件。但是,我想在发生外部事件时暂停视频。

我试图通过将 stringByEvaluatingJavascripFromString 与“player.pauseVideo()”结合使用来实现这一点。但是,经检查,player.pauseVideo 似乎未定义。

奇怪的是,如果我在桌面浏览器 player.pauseVideo 中加载相同的页面,这似乎只是 UIWebView(或可能只是 iOS)中的问题。pauseVideo 工作正常。此外,当我在浏览器中检查播放器对象时,它说它是一个“Y”对象,但在 UIWebView 中它是一个“S”对象,并且它的大多数方法都有混淆的名称。

如有任何帮助,我们将不胜感激。

更新:我找到了一个使用 player.getIframe().contentDocument.querySelector('video').pause() 的解决方法,但这并不理想。

最佳答案

我也遇到了一些麻烦。在搜索 SO 并重新阅读 YouTube iFrame API 几次之后,我想到了在 UIWebView 中暂停加载到 iFrame 中的 YouTube 视频。

我在一个分页的 UIScrollView 中有许多 UIWebView,所以我有一个方法可以形成一个 HTML 字符串以加载到 UIWebView 中:

NSString *urlString = [NSString stringWithFormat:@"https://www.youtube.com/embed/%@",videoID];

preparedHTML = [NSString stringWithFormat:@"<html><body style='background:none; text-align:center;'><script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>var player; function onYouTubeIframeAPIReady(){player=new YT.Player('player')}</script><iframe id='player' class='youtube-player' type='text/html' width='%f' height='%f' src='%@?rel=0&showinfo=0&enablejsapi=1' style='text-align:center; border: 6px solid; border-radius:5px; background-color:transparent;' rel=nofollow allowfullscreen></iframe></body></html>", 628.0f, 352.0f, urlString];

您可以忽略准备好的 HTML 字符串中的样式内容。重要的方面是:

  • 使用 API 创建“YT.player”对象。有一次,我在 iFrame 标签中只有视频,这使我无法在以后使用 JS 引用“播放器”对象。
  • 我在网络上看到了一些示例,其中省略了第一个脚本标记(带有 iframe_api src 标记的标记),但我确实需要它才能正常工作。
  • 在 API 脚本的开头创建“玩家”变量。我还看到了一些省略该行的例子。
  • 将 id 标记添加到要在 API 脚本中引用的 iFrame。我差点忘了那部分。
  • 将“enablejsapi=1”添加到 iFrame src 标记的末尾。这让我挂了一会儿,因为我最初将它作为 iFrame 标签的一个属性,这对我不起作用/不起作用。

当我需要暂停视频时,我只需运行这个:

[webView stringByEvaluatingJavaScriptFromString:@"player.pauseVideo();"];

我可能在那里做了一些不必要的事情,但这是最终开始为我工作的事情。希望对您有所帮助!

关于javascript - Youtube iFrame API pauseVideo 在 UIWebView 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20409239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com