Youtube iFrame API getCurrentTime()始终在IE10中返回0

时间:2014-07-31 07:27:32

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

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

2 个答案:

答案 0 :(得分:0)

是的,我遇到了类似的问题。对我来说,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 ,没有下载字节等等。

答案 1 :(得分:0)

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

  

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

这意味着:

  1. 如果只有html5视频标签可用,则使用html5
  2. 如果只有闪光灯可用则使用闪光灯
  3. 如果两者都可用则使用flash
  4. 由于某些原因,当两者都可用时,闪光灯不能正常工作。发生这种情况的已知场合是:

    1. IE10
    2. IE9
    3. OSX Safari,用户在系统中安装了闪存
    4. 两个解决方案:

      1. force use html5 video tag while both are available,在iframe的src属性中添加html5=1
      2. 使用youtube javascript API代替那些以更可靠的方式嵌入闪光灯的场合。
      3. 我已经写了a jQuery plugin来实现所有的黑客和修复程序,接受你需要的东西并希望它有所帮助。