Chrome扩展程序页面中的YouTube嵌入式视频在Chrome 56中显示为后方矩形

时间:2017-03-09 06:06:16

标签: google-chrome-extension youtube youtube-api

问题:

Chrome扩展程序页面中的YouTube嵌入式视频在Chrome 56中显示为后方矩形。我们如何修复它?

演示扩展名:

https://github.com/terales/youtube-not-play-in-extension-in-crome-v56

如何重现:

  1. 在chrome:// extensions /
  2. 中加载解压后的扩展程序
  3. 打开新标签
  4. 视频无法加载,请检查开发人员工具以查找已记录的请求
  5. 请求在“网络”选项卡中显示为已取消:

    enter image description here

    但是如果我们使用WebRequest API查看请求,则没有问题:

    enter image description here

    Code for embedding

    <iframe width="853" height="480"
        src="https://www.youtube.com/embed/dm57RF1l0Cs?rel=0&showinfo=0" 
        frameborder="0" allowfullscreen></iframe>
    

    Manifest

    {
      "name": "Youtube won't play embeded videos in crome-extension [Demo]",
      "version": "1.0.0",
      "manifest_version": 2,
      "description": "Demo for encountered problem with cancelled request",
      "chrome_url_overrides": {
        "newtab": "newtab.html"
      },
      "permissions": [
        "webRequest",
        "<all_urls>"
      ],
      "content_security_policy": "default-src 'self' https://s.ytimg.com; frame-src https://www.youtube.com;"
    }
    

    经过:

    • 内容安全政策 - 应该没问题,一个月前工作正常
    • 禁用所有其他扩展程序 - 检查空chrome v56配置文件
    • 分享网址来自youtube的Share→Embed文本框
    • 视频正在加载和播放,即使从本地运行也没有任何问题 html文件
    • 扩展程序的文档没有任何相关信息 限制扩展页面内的iframe
    • 协议明确定义,因此它不是error with a protocol-relative URL
    • 使用API​​构建iframe - 结果相同

    Chrome版本:

    • 56.0.2924.87(64位) - 不会播放视频,请求显示为已取消,
    • 59.0.3035.0金丝雀(64位) - 将播放视频,但请求显示为已取消

    铬:

    • 59.0.3036.0(开发者构建)(32位) - 将播放视频,但请求显示为已取消

1 个答案:

答案 0 :(得分:1)

Update from Chromium Dev

  

这可能不是我们可以稳定推动的解决方案,所以你必须等到57稳定(这应该很快)。

错误来源

在网内​​错误中找到:

error_204
Unknown error
Error: Failed to construct 'IntersectionObserver': Unable to get root node in main frame to track.
    at new AZ (https://www.youtube.com/yts/jsbin/player-en_US-vflg9Wu9U/base.js:3691:122)
    at new V1 (https://www.youtube.com/yts/jsbin/player-en_US-vflg9Wu9U/base.js:3972:112)
    at V1.create (https://www.youtube.com/yts/jsbin/player-en_US-vflg9Wu9U/base.js:6964:333)
    at Bh.<anonymous> (https://www.youtube.com/yts/jsbin/www-embed-player-vflzkmSYc/www-embed-player.js:431:269)
    at Bh.k.mb (https://www.youtube.com/yts/jsbin/www-embed-player-vflzkmSYc/www-embed-player.js:431:308)
    at Fh (https://www.youtube.com/yts/jsbin/www-embed-player-vflzkmSYc/www-embed-player.js:429:143)
    at Bh.k.qa (https://www.youtube.com/yts/jsbin/www-embed-player-vflzkmSYc/www-embed-player.js:422:176)
    at https://www.youtube.com/yts/jsbin/www-embed-player-vflzkmSYc/www-embed-player.js:464:420
    at https://www.youtube.com/yts/jsbin/www-embed-player-vflzkmSYc/www-embed-player.js:69:63
line=Not available
level=ERROR

关于此错误,已经有一个封闭的问题: IntersectionObserver Error when embedding a YouTube video in an iframe

向Chrome小组提交了一个问题: https://bugs.chromium.org/p/chromium/issues/detail?id=698545

我们现在无法做任何事情,等待回复。