【问题标题】:Youtube iFrame API getCurrentTime() always returns 0 in IE10Youtube iFrame API getCurrentTime() 在 IE10 中总是返回 0
【发布时间】:2014-09-23 01:18:46
【问题描述】:

This fiddle 复制自官方示例given here,但getCurrentTime() 在 IE0 上似乎总是返回 0。有没有人遇到过同样的问题?

【问题讨论】:

    标签: javascript internet-explorer iframe youtube-api internet-explorer-10


    【解决方案1】:

    这是由于 iframe API 处理 flash/html5 支持的方式。

    与 Flash 和 JavaScript 播放器 API 都涉及在您的网页上嵌入 Flash 对象不同,IFrame API 将内容发布到您网页上的标签。这种方法提供了比以前可用的 API 更大的灵活性,因为它允许 YouTube 为不支持 Flash 的移动设备提供 HTML5 播放器而不是 Flash 播放器。

    这意味着它将:

    1. 如果只有 html5 视频标签可用,则使用 html5
    2. 如果只有闪光灯可用,请使用闪光灯
    3. 如果两者都可用,请使用闪光灯

    由于某些原因,当两者都可用时,闪光灯无法正常工作。发生这种情况的已知情况有:

    1. IE10
    2. IE9
    3. OSX Safari,当用户在系统中安装了 flash 时

    两种解决方案:

    1. force use html5 video tag while both are available,通过在 iframe 的 src 属性中添加 html5=1
    2. 在这些情况下改用youtube javascript API,这样可以更可靠地嵌入闪存。

    我已经写了 a jQuery plugin 来实现所有的黑客和修复,拿走你需要的东西,希望它有所帮助。

    【讨论】:

      【解决方案2】:

      是的,我遇到了类似的问题。对我来说,getCurrentTime() 返回 0,但并非总是如此 - 当我播放 youtube 视频时,它工作正常,但是当我在 youtube 视频之后播放 Brightcove 视频,然后返回 youtube 时,它​​返回 0。 其他人也有类似的问题,这里有讨论:https://productforums.google.com/forum/#!topic/youtube/F5CEukwhitA

      这个问题似乎与与其他库的冲突有关,我也相信我的应用程序就是这种情况。尝试删除其他第三方库并关闭浏览器扩展,看看问题是否仍然存在。

      顺便说一句,您是否尝试在 jsfiddle 之外(即在应用程序中)运行代码?


      在我的例子中,getCurrentTime() 返回 0 的原因是它附加到了分离的 DOM 树中的节点。当 AngularJS 和 jQuery 一起使用时,这是一个已知的情况,并且对不存在(已删除)的 DOM 元素的引用仍保留在 jQuery 缓存中。

      基本上,检查您的播放器连接到哪个节点,以及您是否没有任何副本。

      正是播放器对象中嵌套的 o 对象让我走上了正轨。 PlayerState 一直是 3,没有下载字节等。

      【讨论】:

        猜你喜欢
        • 2012-10-03
        • 1970-01-01
        • 1970-01-01
        • 2019-02-27
        • 2013-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-27
        相关资源
        最近更新 更多