YouTube Iframe API onError 事件近几个月没有触发

2024-01-11

我非常确定 YouTube Iframe API“onError”事件过去会触发,因为我运行一个基于此 API 的项目。但最近“onError”事件不会触发,即使是最简单的错误。

这是一个基于官方页面的简单示例代码(https://developers.google.com/youtube/iframe_api_reference https://developers.google.com/youtube/iframe_api_reference)并且是可行的:

<iframe id="existing-iframe-example"
        width="640" height="360"
        src="https://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1"
        frameborder="0"
        style="border: solid 4px #37474F"
></iframe>

<script type="text/javascript">
  var tag = document.createElement('script');
  tag.id = 'iframe-demo';
  tag.src = 'https://www.youtube.com/iframe_api';
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

  var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player('existing-iframe-example', {
        events: {
          'onReady': onPlayerReady,
          'onStateChange': onPlayerStateChange,
          'onError': onError
        }
    });
  }
  function onError(event) {
    console.log(event.data)
  }
  
  function onPlayerReady(event) {
    
  }

  function onPlayerStateChange(event) {
    console.log(event.data);
  }
</script>

一旦将视频 ID 字符串“M7lc1UVf-VE”更改为错误的字符串,例如“M7lc1UVf”,它应该触发“onError”事件,但现在不会。

根据官方页面指南:https://developers.google.com/youtube/players/support https://developers.google.com/youtube/players/support→“Google工程师使用youtube-iframe-api标签监控并回答问题”,希望Google工程师能够看到这篇文章并修复“onError”问题。


我找到了解决这个问题的方法。我发现,至少就我而言,onError回调不会在初始加载时触发(当最需要的时候!),但会在播放器的其余部分完全加载后触发。

如果您绝对需要onError如果事件起作用,您可以在已加载的播放器中重新加载视频。去除autoplay参数来自playerParams对象——这会导致黑客失败。添加loadByVideoId(用于自动播放)或cueByVideoId具有相同的视频 IDonReady打回来。

这将重新加载当前视频和onError如果需要,回调将被触发。否则,除了视频在播放前短暂提示之外,几乎不会有任何明显的效果,如果autoplay是期待。

如果您想了解更多信息,请告诉我 - 希望有帮助!

EDIT:

  • 这是一个 codeandbox 演示问题. https://codesandbox.io/s/react-youtube-demo-forked-wyenn?file=/src/App.js请注意, 在单击“重置”按钮之前,错误不会添加到列表中。 (截至 2022 年 2 月 12 日,该错误仍然存​​在。)
  • 这是一个 codeandbox 演示解决方法我发现。 https://codesandbox.io/s/onerror-issue-workaround-xgjx7?file=/src/App.js注意onReady回调,以及列表中填充的错误。

更新: 我不知道它是什么时候发生的——谷歌的开发人员从未更新过我的问题——但看起来这个错误可能已经解决了。第一个演示现在按预期列出了加载时的错误代码。对于实施此解决方法的任何人,您现在也许可以删除该黑客攻击。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YouTube Iframe API onError 事件近几个月没有触发 的相关文章

随机推荐

  • 如何学习 Jackson 来转换抽象类的继承者?

    我有一堂课 EqualsAndHashCode callSuper true Data public class AppealTemplateDto extends AbstractDto private List
  • 为什么我在尝试批量打印变量时收到“Echo is on”

    我尝试执行一个简单的批处理文件脚本 echo 1 set var 1 echo var 当我在 XP 中运行它时 它给出了预期的输出 但是当我在 Vista 或 Windows 7 中运行它时 我在尝试打印 回显 值时收到 Echo is
  • 在 MATLAB 中仅查找相关点

    我有一个 MATLAB 函数可以查找样本中的特征点 不幸的是 它仅在大约 90 的时间内有效 但是 当我知道应该查看样本中的哪些位置时 我可以将其提高到几乎 100 所以我想知道MATLAB中是否有一个函数可以让我找到大部分结果所在的范围
  • GetPrivateProfileInt-仅读取默认值

    我正在尝试读取 C 中包含内容的 init 配置文件 IP地址 IP地址 169 254 115 22 扫描配置 扫描频率 2500 扫描分辨率 2500 起始角度 700000 停止角度 1100000 到目前为止 我已经使用这段代码来读
  • 有效检查数据帧是否具有范围内的日期,并返回计数

    假设我们有一个数据框df包含按日期按时间顺序排列的日期列表 目标是获取给定日期内包含给定日期的日期范围的人数 df pd DataFrame data date datetime date 2007 12 1 datetime date 2
  • 在启用 IAM 登录的情况下通过 cloud-sql-proxy 从 Cloud Run 连接到 Cloud SQL

    我想使用服务帐号从 Cloud Run 连接到 Cloud SQL 实例 连接过去是在 VPC 内创建的 我们只需提供一个带有user and a password到我们的 PostgreSQL 客户端 但现在我们希望身份验证由 Googl
  • 在 lubuntu 15.04 上构建 Kurento

    我正在尝试在我的 lubuntu 15 04 上构建整个 Kurento 与 ubuntu 15 04 相同 但 UI 不同 我首先克隆所有存储库 mkdir kurento cd kurento git clone https githu
  • 通过redux改变状态后如何更新React组件?

    我正在学习 React 和 Redux 在学习的同时 我决定制作一个带有按钮的网页 单击该按钮就会改变状态 在按钮下方 我想在不同的组件中显示当前状态 虽然单击按钮会更改状态 但它不会反映在组件中 这是我的代码 App js import
  • 如何查看整个表

    我正在尝试使用 quandl 获取表 数据集 该表有 5 行 X 12 列 但在输出中仅显示 4 列 其余列被 3 个点替换 我使用Python编写了以下代码 import quandl df quandl get WIKI GOOGL p
  • printf("%f",x) 好的,printf("%F",x) 错误格式参数过多

    当我在 CodeBlocks 中使用说明符 F 时 为什么编译器会给出错误 格式参数过多 include
  • app.config 转换

    我非常喜欢添加web config 转换 http msdn microsoft com en us library dd465318 aspx在 Visual Studio 2010 中 另请参阅Scott Hanselman 最近在 M
  • 牛找到长栅栏间隙的算法

    我正在看这个挑战 一头名叫萨姆的近视奶牛在目前的牧场上找不到足够的草 它记得牧场的围栏有一个缺口 不幸的是 栅栏很长 要绕一整圈 Sam 需要沿着栅栏走几步 山姆只能看到间隙就在它旁边 记住牛是近视的 在本题中 您将设计不同的算法 使 Sa
  • 无法配置 CMake 来查找 Bison 的 Homebrew 安装版本

    我正在运行 macOS 10 14 并且安装了bison版本 3 2 与brew 但它拒绝链接 brew link bison force Warning Refusing to link macOS provided software b
  • struts2 将 URL 传递给 Action

    我读了struts手册通配符映射 http struts apache org 2 1 8 1 docs wildcard mappings html并决定自己测试一些例子 我有一个行动指向
  • 创建 Liferay portlet 配置页面

    我正在尝试为 Liferay portlet 创建一个配置页面 以便我可以为其设置一些参数 例如 我想选择控制器在查看时应显示哪个页面 配置应位于此处 所以我为配置创建了一个控制器 如下所示 import com liferay porta
  • 学习WPF和MVVM

    我最近加入了一个新的开发项目 使用 WPF 和 MVVM 构建胖客户端应用程序 我在各种 NET 框架 从 1 1 到 3 5 以及所有主要技术中开发过应用程序 WebForms MVC 和 WinForms 在我所有的项目中 我都很享受其
  • 如何仅在 3 边应用盒子阴影? [复制]

    这个问题在这里已经有答案了 我在下面使用我的 CSS 页面 他在 4 边应用了方框阴影 我希望它只应用于右侧 底部和左侧 如何仅在 3 边应用框阴影 webkit box shadow 0 0 10px rgba 0 0 0 0 22 mo
  • 显示格式 ApplyFormatInEditMode

    我在 C 中使用 MVC 3 我有一个具有此属性的类 DisplayFormat DataFormatString 0 dd MMM yyyy ApplyFormatInEditMode true 我想在用户处于状态时强制执行验证EDIT
  • 将 cout 和 stdout 重定向到 C++ 中的字符串以进行单元测试

    我正在努力在单元测试下获取一些遗留代码 有时感知现有程序行为的唯一方法是从控制台输出 我在网上看到很多关于如何将 stdout 重定向到 C 中的另一个文件的示例 但是有没有办法可以将其重定向到内存中的流 以便我的测试不必依赖于磁盘 我希望
  • YouTube Iframe API onError 事件近几个月没有触发

    我非常确定 YouTube Iframe API onError 事件过去会触发 因为我运行一个基于此 API 的项目 但最近 onError 事件不会触发 即使是最简单的错误 这是一个基于官方页面的简单示例代码 https develop